>백엔드 개발 >PHP 튜토리얼 >Jenkins 재 도입 : 파이프 라인으로 자동 테스트

Jenkins 재 도입 : 파이프 라인으로 자동 테스트

Christopher Nolan
Christopher Nolan원래의
2025-02-10 15:01:09738검색

Re-Introducing Jenkins: Automated Testing with Pipelines

코어 포인트

Jenkins는 복잡한 응용 프로그램의 자동 테스트를 지원하고 배포 전에 오류를 발견하고 해결하여 릴리스 프로세스 속도를 높이는 인기있는 오픈 소스 빌드 서버입니다.

Jenkins 파이프 라인 (버전 2.0에 소개)은 테스트 및 빌딩 코드를 위해 그루비 스크립팅 언어로 작성된 사용자 정의 가능한 단계 세트입니다. 한 단계가 실패하면 전체 빌드가 실패하고 Jenkins는 실행을 중단합니다.
    Jenkins는 Laravel Homestead를 사용하여 쉽게 설치하고 구성 할 수 있습니다. 설정이 완료되면 새 빌드 작업을 작성하여 프로젝트의 최신 버전을 확인하고 종속성을 설치하고 단위 테스트를 실행할 수 있습니다.
  • Jenkins 파이프 라인은 코드 기반의 루트 디렉토리에서 Jenkinsfile 스크립트로 작성하여 버전 제어를 구현할 수 있습니다. 또한 프로젝트의 다른 지점에서 다른 작업을 실행하기 위해 멀티 브랜치 파이프 라인 작업을 설정할 수도 있습니다.
  • Jenkins는 플러그인 테스트 및 클라우드 서비스와의 통합을 포함하여 기능을 확장하도록 설치 및 구성 할 수있는 광범위한 플러그인 생태계를 지원합니다. 커밋이 저장소로 푸시 될 때마다 자동으로 구축되도록 구성 할 수 있으며 올바르게 보호해야합니다.
  • 작곡가 종속성, 웹 팩 빌드 스크립트 및 모든 환경 변수를 포함하여 응용 프로그램이 더욱 복잡해짐에 따라, 우리는 이러한 모든 복잡성을 테스트하는 것이 느리고, 특히 모든 테스트가 전체 환경. 마찬가지로, 코드 스타일은 시간이 지남에 따라 왜곡 될 수 있으며, 제작에 사용할 수있는 배포 아카이브를 작성하려면 특정 단계 세트가 필요합니다.
  • 응용 프로그램을 테스트한다고 가정하면 다음 단계가 필요합니다.
  • run 의존성이 설치되어 있는지 확인하십시오 구문 오류를 확인하기 위해 코드베이스의 각 PHP 파일에서
  • run 단위 테스트를 위해 phpUnit을 실행하십시오 기능 테스트
  • 에 대한 코드 셉션을 실행하십시오

이러한 단계 중 하나라도 실패하면 오류가 해결 될 때까지 소프트웨어가 배포에 적합하지 않은 것으로 간주되어야합니다. 소프트웨어가 더욱 복잡해지고 시간이 지남에 따라 테스트 횟수가 증가함에 따라 전체 테스트 스위트를 실행하는 데 몇 분이 걸릴 수 있습니다.

이 문제를 극복하기 위해 개발 워크 플로우에 빌드 서버를 도입 할 수 있습니다. 빌드 서버는 일련의 단계를 반복적으로 실행할 수있는 소프트웨어를 실행하고 그 중 하나가 실패하면 빌드 서버가 문제를 알릴 수 있습니다. 오픈 소스 프로젝트에 참여한 경우 Travisci 또는 Circleci와 같은 서버를 구축하는 데 실용적인 응용 프로그램을 보았을 수 있습니다. 예를 들어, Laravel 프로젝트에 대한 각 풀 요청은 Travisci에 의해 테스트되어 변경 사항이 테스트를 중단하지 않도록하고 Styleci는 코드 변경이 프로젝트 코드 스타일과 일치하도록합니다.

Jenkins는 올해 버전 2.0을 출시 한 인기있는 오픈 소스 빌드 서버입니다. 이 새로운 릴리스의 주요 기능 중 하나는 (이전 옵션) 파이프 라인 플러그인을 핵심 기능으로 포함시키는 것입니다. Re-Introducing Jenkins: Automated Testing with Pipelines 파이프 라인은 코드를 테스트하고 빌드하기 위해 순차적으로 실행할 수있는 일련의 사용자 정의 가능한 단계 세트입니다. 파이프 라인은 그루비 스크립팅 언어로 작성되었으며 매우 간단한 구문이 있으며 시작하기 쉽습니다. 예를 들어, 앞에서 이전에 설명 된 테스트 단계를 파이프 라인으로 설명하려면 다음과 같이 보일 수 있습니다.

성명서는 Jenkins에게 별도의 빌드 노드를 할당하도록 지시합니다 (Jenkins는 단일 서버 모드 또는 멀티 노드 설정으로 실행할 수 있음). 블록에는 여러 단계가 있으며 각 단계는 특정 작업을 수행합니다. Jenkins는 각 단계에서 차례로 실행되며 단계가 실패하면 전체 빌드가 실패하고 Jenkins는 실행을 중단합니다.

이 간단한 예에서 다른 테스트의 추가 단계를 쉽게 추가 할 수 있으며, Jenkins는 성공적이거나 실패한 빌드 슬랙 알림을 보내거나 성공적으로 테스트 된 코드를 게시 브랜치로 푸시하거나 풀 요청을 병합으로 표시하도록 지시합니다.

jenkins를 설치하십시오 Jenkins는 설치가 매우 쉽고이 자습서에서 Laravel Homestead를 사용하여 일관된 가상 환경을 제공하여 Jenkins를 로컬로 사용할 수 있습니다.

첫 번째 단계는 Laravel Homestead를 설치하는 것입니다. 여기에 유용한 가이드가 있습니다. 가상 머신을 시작하고 실행하면 파일의 사이트를 구성 할 필요가 없습니다.
<code class="language-groovy">node {
    stage("composer_install") {
        sh 'composer install'
    }

    stage("php_lint") {
        sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l'
    }

    stage("phpunit") {
        sh 'vendor/bin/phpunit'
    }

    stage("codeception") {
        sh 'vendor/bin/codecept run'
    }
}</code>
홈스테드 가상 머신을 일어나서 실행 한 후

를 사용하여 로그인하십시오. node 홈스테드에는 필요한 모든 의존성, 즉 Git, PHP 및 Composer가 제공되므로 Jenkins 자체를 설치하면됩니다. Jenkins Debian 패키지 가이드에 이어 다음 단계를 수행해야합니다. node

run . 이 명령은이 저장소의 Jenkins 패키지를 신뢰할 수 있도록 코드 서명 키를 적성에 추가합니다.

다음으로, 패키지 소스 목록은 Jenkins 패키지 저장소에 대해 APTitude를 알 수 있도록 업데이트되어야합니다. <..>를 실행하십시오.

마지막으로 사용 가능한 패키지의 캐시를 업데이트하고 Jenkins를 설치하려면 적성이 필요합니다.
<code class="language-groovy">node {
    stage("composer_install") {
        sh 'composer install'
    }

    stage("php_lint") {
        sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l'
    }

    stage("phpunit") {
        sh 'vendor/bin/phpunit'
    }

    stage("codeception") {
        sh 'vendor/bin/codecept run'
    }
}</code>
jenkins를 설치하는 데 약 5 분이 걸리며 설치해야 할 많은 종속성이 있기 때문입니다.

jenkins를 설치 한 후 브라우저에서 (또는 )과 같은 가상 호스트 URL을 열면 "잠금 해제"라는 페이지가 표시됩니다.

http://192.168.10.10:8080 homestead.app 가상 머신에서 다음 명령을 실행하면 -

를 실행하면 무작위 숫자와 알파벳 문자열이 콘솔에 인쇄됩니다. 브라우저의 텍스트 필드에 문자열을 복사하여 붙여 넣고 계속 누릅니다.

Re-Introducing Jenkins: Automated Testing with Pipelines

두 가지 옵션이 표시됩니다. "제안 된 플러그인 설치"를 선택하고 플러그인을 다운로드하여 설치할 때까지 몇 분을 기다립니다.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

다음 화면에서 관리자 사용자의 세부 사항을 입력하고 "저장 및 완료"를 누릅니다.

Re-Introducing Jenkins: Automated Testing with Pipelines

Jenkins가 설치되어 구성되었습니다!

첫 번째 작업을 만듭니다 Jenkins를 설정 한 후 다음을 수행 할 새로운 빌드 작업을 만들 것입니다.

최신 버전의

Re-Introducing Jenkins: Automated Testing with Pipelines 를 확인하십시오 작곡가 의존성 설치 run phpUnit

새 작업 링크 생성 (또는 새 프로젝트 생성 링크 - 모두 동일하게 수행)을 클릭하십시오.

Re-Introducing Jenkins: Automated Testing with Pipelines 이름을 입력하고 "파이프 라인"을 선택하고 확인을 누릅니다.

이제 작업의 구성 편집기가 표시됩니다. 파이프 라인 섹션으로 스크롤하고 다음 스크립트를 입력하십시오.

"저장 "을 누릅니다. 작업 개요 페이지로 리디렉션되며 몇 초 후에는 작업이 시작됩니다. 시작되지 않으면 왼쪽 메뉴에서 지금 빌드 링크를 클릭하십시오.

파이프 라인 스크립트에서 정의 할 때 각 위상이 시작되고 종료되면 위상보기가 업데이트됩니다.

무대를 클릭하면 해당 단계의 로그 출력으로 오버레이가 나타납니다. 이는 디버깅에 매우 유용합니다. 또는 왼쪽 메뉴에서 작업을 클릭하고 콘솔을 클릭 할 수 있습니다.

모든 Jenkins 작업에는 자체 작업 공간이 있습니다.이 공간은 빌드 영역에서 필요한 임시 파일을 안전하게 만들 수있는 영역입니다. 이 작업의 작업 공간 위치는

에서 찾을 수 있습니다. 기본적으로 Jenkins는 모든 빌드에 대한이 작업 공간을 지우지 않습니다. 이 작업을 수행 해야하는 경우 다음과 같이 파이프 라인 스크립트의 시작 부분에 위상을 추가 할 수 있습니다. /var/lib/jenkins/workspace/laravel jenkinsfile

첫 번째 작업의 경우 작업 설정 인터페이스에서 파이프 라인 스크립트를 편집했습니다. 그러나 코드를 사용 하여이 스크립트를 버전 제어에 저장하는 것이 더 유용합니다.
<code class="language-groovy">node {
    stage("composer_install") {
        sh 'composer install'
    }

    stage("php_lint") {
        sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l'
    }

    stage("phpunit") {
        sh 'vendor/bin/phpunit'
    }

    stage("codeception") {
        sh 'vendor/bin/codecept run'
    }
}</code>
Jenkins의 파이프 라인을 사용하여 코드 저장소의 루트 디렉토리에서 Pipeline을 Jenkinsfile 스크립트로 작성할 수 있으며 발견 및 실행됩니다. 그 개념은 이미 익숙 할 수있는

또는 파일과 유사합니다.

github 프로젝트 페이지에서 오른쪽 상단의 "포크"버튼을 클릭 한 다음 팝업 창에서 프로필을 클릭하십시오.

라는 새 분기를 작성한 다음 새 파일을 만듭니다 (GitHub에서 직접이를 수행 할 수 있으며 필요한 경우 저장소를 복제 할 필요가 없습니다).

.travis.yml 다음 스크립트를 입력하고 파일을 제출하십시오 .circleci.yml 이제 Jenkins로 돌아가서 왼쪽 메뉴에서 "구성"버튼을 클릭하십시오. 파이프 라인 섹션으로 스크롤하고 파이프 라인 스크립트에서 SCM으로 정의 드롭 다운 메뉴를 업데이트하십시오.

laravel/framework 포크 된 저장소의 세부 사항을 입력하고 저장을 클릭하십시오.

jenkinsfile 작업 개요 화면에서 왼쪽 메뉴에서 지금 빌드를 클릭하십시오. 성공적인 빌드가 있어야합니다.

멀티 브랜치 파이프 라인 프로젝트 대부분의 소프트웨어 프로젝트는 저장소의 여러 분기를 사용하여 프로젝트의 여러 단계를 정의합니다. 예를 들면 :

Re-Introducing Jenkins: Automated Testing with Pipelines 마스터 브랜치는 현재 프로덕션 버전 를 나타냅니다 개발 지점은 현재 임시 버전 를 나타냅니다 기능/새 프로파일 파지 브랜치는 진행중인 함수

를 나타낼 수 있습니다

각 지점마다 많은 사용자 정의 작업을 실행할 수 있습니다. 예를 들어, 마스터 또는 개발 지점에서 커밋이있을 때마다 전체 장치 및 통합 테스트를 실행하고 다른 모든 지점에서는 단위 테스트 만 충분한.
<code class="language-bash">sudo apt-get update && sudo apt-get install jenkins</code>
jenkinsfile은 그루비 프로그래밍 언어로 작성되었으므로 사용할 수있는 완전한 스크립팅 언어가 있습니다.

이 예에서는 지점 이름이 마스터 또는 개발인지 확인하기 위해 IF 문을 추가했습니다.

이후, 다른 배포 아카이브를 생성하고 지점 이름을 기반으로 코드 배포 서비스에 등록하는 스위치 문이 있습니다 (이 예에서는 이것이 Amazon Web Service의 Codedeploy Service에서 어떻게 작동하는지 보여주었습니다).

<code class="language-groovy">node {
    stage("composer_install") {
        sh 'composer install'
    }

    stage("php_lint") {
        sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l'
    }

    stage("phpunit") {
        sh 'vendor/bin/phpunit'
    }

    stage("codeception") {
        sh 'vendor/bin/codecept run'
    }
}</code>
다중 브랜치 파이프 라인 작업도 쉽게 설정할 수 있습니다. 프로젝트를 만들 때 "다중 브랜치 파이프 라인"을 유형으로 선택하십시오.

그런 다음 구성 화면에서 파이프 라인 정의 드롭 다운 메뉴를 SCM의 파이프 라인 스크립트로 설정하고 리포지토리 세부 사항을 입력하십시오.

"브랜드 색인 "옵션이 실행될 때마다 (작업 내부의"지금 빌드 "메뉴 항목을 대체 할 때마다 Jenkins 해당 지점의 새 빌드가 실행됩니다. Re-Introducing Jenkins: Automated Testing with Pipelines 한 걸음 더 나아가

Jenkins의 인기는 대체로 광범위한 플러그인 생태계 때문입니다.

Jenkins 홈 화면에서 왼쪽 메뉴에서 Jenkins 관리를 클릭 한 다음 플러그인 관리자를 클릭하십시오.

테스트 플러그인에서 클라우드 서비스와의 통합에 이르기까지 수십 개의 플러그인을 설치하고 구성 할 수 있습니다.

예를 들어, 팀이 Slack을 사용하는 경우 Slack 알림 플러그인을 활성화 할 수 있습니다. 메인 Jenkins 설정 화면 ( "관리 Jenkins" -> "구성 시스템")에서 구성되며 파이프 라인 스크립트의 일부로 슬랙 메시지를 보낼 수 있습니다.

Jenkins가 서버에서 실행중인 경우 커밋이 저장소에 밀려날 때마다 자동으로 구축 (또는 지수를 실행)하도록 작업을 쉽게 구성 할 수 있습니다.

GitHub 프로젝트의 경우 GitHub 플러그인이 설치되어 활성화되어 있는지 확인한 다음 GitHub 저장소 설정에서 "Jenkins (GitHub Plugin)"서비스와 통합을 활성화하십시오.

Bitbucket의 경우, 이것은 조금 더 복잡하며 블로그에 필요한 단계를 자세히 설명했습니다.

또한 Jenkins 서버가 올바르게 보호되어야합니다. 사용자는 Jenkins에서 수동으로 생성하거나 Oauth를 사용하여 Github 또는 Bitbucket에 대한 인증을 위임하거나 Jenkins를 조직의 LDAP 디렉토리에 연결할 수 있습니다. 다시, Jenkins는 항상 SSL을 통해 실행되어 Jenkins에 대한 액세스를 쉽게 가로 채울 수 없습니다.

Jenkins 설치에는 또한 "코드 스 니펫 생성기"가 제공되어 모든 활성화 된 파이프 라인 기능을 볼 수 있습니다 (예 : SH, SlackSend, Deletedir () 및 SCM을 이미 사용했습니다. 작업 개요 화면의 왼쪽 메뉴에서 링크를 찾을 수 있습니다.

Re-Introducing Jenkins: Automated Testing with Pipelines 요약 Jenkins는 소프트웨어의 신뢰성을 향상시키고 많은 시간을 절약 할 수있는 매우 강력한 도구입니다. 인간은 반복적 인 작업을 반복해서 수행하는 데 매우 나쁘지만 컴퓨터는 이것에 능숙합니다.

5 분 이상 실행되는 테스트로 인해 팀이 속도가 느려지면 Jenkins에게 테스트를 제거하십시오.

Jenkins는 새로운 프로덕션 또는 스테이징 버전을 사용할 수있을 때 배포 아카이브를 자동으로 생성하려면이 작업을 수행 할 수 있습니다.

고객이 발견하기 전에 코드 품질을 주시하고 회귀를 발견하려면 Jenkins가 도움을 줄 준비가되었습니다.

아래에 질문이나 의견을 남겨두고 가장 창의적인 Jenkins 파이프 라인을 알려주십시오!

이 기사를 좋아한다면 다음과 같은 유용한 것을 찾을 수도 있습니다.

사이프러스 테스트 : 웹 응용 프로그램 실행에 대한 안내서 UnitTest 및 Pytest 를 사용하여 Python 단위 테스트를 소개합니다 JEST

를 사용하여 반응 구성 요소를 테스트하는 방법 인형극 로 엔드 투 엔드 테스트를 배우십시오 3 개의 핸즈프리 연속 테스트 방법

자동 테스트를 위해 파이프 라인을 사용하는 Jenkin에 대한 자주 묻는 질문

자동 테스트에 Jenkins를 사용하면 어떤 이점이 있습니까?

Jenkins는 자동 테스트에 많은 이점을 제공하는 인기있는 오픈 소스 도구입니다. 첫째, 지속적인 통합 및 지속적인 전달 (CI/CD)을 제공하여 개발자가 프로젝트에 더 자주 변경을 통합 할 수 있습니다. 이로 인해 잠재적 인 문제가 조기 감지되고 수리 시간이 줄어 듭니다. 둘째, Jenkins는 다양한 플러그인을 지원하므로 다양한 프로젝트 요구에 맞게 사용자 정의 가능하고 적응할 수 있습니다. 셋째, 실시간 테스트 결과와 자세한 보고서를 제공하여 문제를 신속하게 식별하고 해결하는 데 도움이됩니다. 마지막으로, Jenkins는 파이프 라인 도메인 특정 언어 (DSL)를 통해 "코드로"파이프 라인을 복잡하게 전달할 수있는 단순한 도구 세트 인 파이프 라인을 지원합니다.

PHP 테스트를 위해 Jenkins를 설정하는 방법은 무엇입니까?
    PHP 테스트를 위해 Jenkins를 설정하려면 여러 단계가 필요합니다. 먼저 서버에 Jenkins를 설치해야합니다. 설치 후 PHP 플러그인, PHPUnit 플러그인 등과 같은 PHP 테스트에 필요한 플러그인을 설치할 수 있습니다. 플러그인을 설치 한 후 새로운 Jenkins 작업을 만들어 PHP 프로젝트에 대해 구성 할 수 있습니다. 여기에는 소스 코드 관리 설정, 구축 트리거 및 빌드 단계가 포함됩니다. 빌드 단계에서는 PHP 테스트를 실행하도록 명령을 지정할 수 있습니다. 구성이 완료되면 작업을 실행할 수 있으며 Jenkins는 테스트를 수행하고 자세한 보고서를 제공합니다.
  • Jenkins는 phpunit에서 어떻게 테스트합니까?
  • Jenkins는 Jenkins Jobs에서 PhPUnit 테스트를 수행하여 PhPunit과 협력합니다. PHPUnit 명령은 Jenkins 작업의 빌드 단계에서 지정할 수 있습니다. 작업이 실행되면 Jenkins는 PHPUnit 테스트를 수행하고 결과를 캡처합니다. 그런 다음 결과는 Jenkins 대시 보드에 표시되어 테스트 실행에 대한 자세한 보고서를 제공합니다. 여기에는 실행, 통과, 실패 및 건너 뛰는 테스트 수와 코드 적용 범위가 포함됩니다.
  • PHPUnit을 사용한 Jenkins PHP 응용 프로그램의 올바른 워크 플로는 무엇입니까?

    PhPunit을 사용한 Jenkins PHP 응용 프로그램의 올바른 워크 플로우에는 일반적으로 다음 단계가 포함됩니다. 먼저 버전 제어 시스템에서 소스 코드를 확인하십시오. 다음으로 Composer for PHP 프로젝트와 같은 종속성을 설치하십시오. 그런 다음 PHPUnit 테스트를 실행하십시오. 그런 다음 테스트 결과를 Jenkins 대시 보드에 수집하여 표시합니다. 테스트가 실패하면 빌드가 실패한 것으로 표시됩니다. 그렇지 않으면 빌드가 성공적으로 표시됩니다. 이 워크 플로는 지속적인 통합 및 전달을 위해 Jenkins 파이프 라인을 사용하여 자동화 할 수 있습니다.

    phpunit 및 junit을 구문 분석하는 방법은 Jenkins를 생성하는 방법은 무엇입니까?

    Junit 플러그인을 사용하여 Jenkins에서 PhPunit 및 Junit 결과를 구문 분석 할 수 있습니다. PHPUnit 테스트를 실행 한 후 Junit XML 보고서를 생성 할 수 있습니다. Jenkins의 Junit 플러그인은이 보고서를 구문 분석 할 수 있습니다. Jenkins 작업의 구축 후 작업에서 "Publish Junit Test Results Report"작업을 추가하고 Junit XML 보고서의 위치를 ​​지정할 수 있습니다. 그런 다음 Jenkins는 보고서를 구문 분석하고 대시 보드에 결과를 표시합니다. 여기에는 테스트 기간 및 추세뿐만 아니라 실행, 통과, 실패 및 건너 뛰는 테스트 수가 포함됩니다.

위 내용은 Jenkins 재 도입 : 파이프 라인으로 자동 테스트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.