현대 소프트웨어 개발에서 CI/CD (지속적인 통합 및 지속적인 전달)는 개발 효율성을 향상시키고 코드 품질을 보장하기위한 주요 기술 중 하나가되었습니다. 자동화 된 프로세스를 통해 개발 팀은 개발 단계 초기에 문제를 감지하고 새로운 버전을 신속하게 출시 할 수 있습니다. 그러나 다양한 배포 플랫폼에서 특히 다른 운영 체제 및 환경에서 시스템 유형을 자동으로 식별하고 구별하는 방법은 여전히 주요 문제입니다. 이 기사는 PHP 코드와 함께 CI/CD 프로세스에서 다양한 배포 플랫폼의 시스템 유형을 자동으로 식별하고 구별하는 방법을 소개합니다.
CI/CD는 코드 변경을 자동으로 통합, 테스트 및 배포하는 개발 관행입니다. CI (Continuous Integration)에는 개발자 코드를 공유 코드 기반, 빌딩 및 테스트에 자동으로 제출해야합니다. CD (Continuous Delivery)는 코드를 생산 환경에 자동으로 배포 할 수 있고 배포 프로세스가 신뢰할 수 있고 반복 가능하도록합니다.
실제 CI/CD 프로세스에서, 다른 플랫폼에 배포 할 때 환경 구성 및 코드 실행은 종종 시스템 유형 (예 : Linux, Windows, MacOS)의 차이에 직면합니다. 이러한 차이를 자동으로 식별하고 해당 적응을 만드는 방법은 CI/CD 시스템 최적화의 중요한 측면입니다.
PHP 자체는 현재 환경의 시스템 유형을 감지하는 데 사용할 수있는 일부 내장 기능 및 상수를 제공합니다. 이러한 도구를 사용하면 CI/CD 프로세스에서 자동 식별을 쉽게 달성 할 수 있습니다.
PHP는 PHP_OS 상수를 제공하며 현재 PHP 실행 환경의 운영 체제 유형을 직접 얻을 수 있습니다. 다음은 사용 방법의 예입니다.
<?php
// 운영 체제 정보를 얻으십시오
$os = PHP_OS;
echo "현재 운영 체제입니다:".$os;
?>
PHP_OS 상수에 의해 반환 된 값은 다음과 같은 운영 체제에 따라 다릅니다.
Linux : Linux 시스템
Winnt : Windows 시스템
다윈 : MACOS 시스템
운영 체제 버전 번호, 아키텍처 등과 같은보다 자세한 정보가 필요한 경우 php_uname () 함수를 통해이를 얻을 수 있습니다. 운영 체제에 대한 자세한 정보를 반환합니다.
<?php
// 운영 체제에 대한 자세한 정보를 얻으십시오
$uname = php_uname();
echo "운영 체제 세부 사항:".$uname;
?>
이것은 다음과 같은 것을 반환합니다.
Linux Yourhost 4.15.0-50-Generic #54-Ubuntu SMP Fri 7 월 13 일 17:32:05 UTC 2018 X86_64 (Linux)
Windows NT Win10 10.0 빌드 18362 (Windows)
Darwin MacBook-Pro. Local 18.7.0 Darwin 커널 버전 18.7.0 (MacOS)
운영 체제 정보가 얻어지면 다른 시스템 유형에 따라 CI/CD 프로세스에 적응할 수 있습니다. 예를 들어 Linux에 배포 된 경우 특정 종속성을 설치할 수 있으며 Windows에 다른 경로 분리기 또는 명령을 사용해야 할 수도 있습니다.
<?php
$os = PHP_OS;
if (strpos($os, 'WIN') !== false) {
echo "이것은 Windows 체계\n";
// Windows 특정 작업
} elseif (strpos($os, 'Linux') !== false) {
echo "이것은 Linux 체계\n";
// Linux 특정 작업
} elseif (strpos($os, 'Darwin') !== false) {
echo "이것은 macOS 체계\n";
// macOS 특정 작업
} else {
echo "无法识别的操作체계\n";
}
?>
실제 CI/CD 프로세스에서 시스템 유형을 자동으로 식별 한 후 자동 배포 도구 (예 : Jenkins, Gitlab CI, GitHub 액션 등)와 함께 사용하여 배포 프로세스의 정확성을 보장 할 수 있습니다. 예를 들어, 시스템이 Windows 플랫폼임을 인식하면 Composer를 자동으로 설치하고 종속성 관리를 할 수 있습니다. Linux에서 APT는 종속성을 설치하는 데 사용될 수 있습니다.
CI/CD 프로세스에 Gitlab CI를 사용한다고 가정 해 봅시다. 다음은 운영 체제 유형에 따라 다른 배포 스크립트가 실행되는 .gitlab-ci.yml 구성의 단순화 된 예입니다.
stages:
- deploy
deploy:
script:
- |
if [[ "$CI_RUNNER_OS" == "linux" ]]; then
echo "배포 Linux 체계"
./deploy-linux.sh
elif [[ "$CI_RUNNER_OS" == "windows" ]]; then
echo "배포 Windows 체계"
./deploy-windows.bat
else
echo "无法识别的操作체계"
fi
많은 PHP 프로젝트에서 URL은 일반적인 구성 항목입니다. 배포 프로세스 중에 다른 환경에 따라 URL의 도메인 이름을 조정 해야하는 경우 (예를 들어, 개발 환경에서 로컬 도메인 이름과 프로덕션 환경에서 공식 도메인 이름을 사용) 다음 코드를 사용하여 처리 할 수 있습니다.
<?php
// 원래의 URL
$url = "http://example.com/api/v1/data";
// 도메인 이름을 대체하십시오 m66.net
$modified_url = preg_replace('/https?:\/\/[^\/]+/', 'http://m66.net', $url);
echo "수정 URL 예:".$modified_url;
?>
이 코드는 원래 URL의 도메인 이름에 관계없이 원래 URL의 도메인 이름 부분을 M66.net 으로 대체합니다.
CI/CD 프로세스와 함께 다양한 시스템 유형을 자동으로 식별하고 구별하면 배포 프로세스를보다 효율적으로 만들 수있을뿐만 아니라 플랫폼 차이로 인한 오류를 줄일 수 있습니다. PHP가 제공하는 시스템 정보 수집 기능을 통해 다른 운영 체제에 대해 다른 배포 단계를 수행 할 수 있습니다. URL 교체에 의해 올바른 도메인 이름이 다른 환경에서 사용되도록 할 수 있습니다. 이러한 접근 방식을 사용하여 CI/CD 프로세스의 유연성과 신뢰성을 높이면 여러 플랫폼의 지속적인 통합 및 전달이 가능합니다.