에서 선언적 또는 스크립팅된 파이프라인 사용 DevOps

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기5분
  • Jenkinsfile을 사용하면 단계가 수동으로 생성되지 않고 자동으로 오케스트레이션 작업에 매핑되고 연결됩니다.

    Jenkinsfile은 파이프라인의 Jenkins 정의를 포함하는 텍스트 파일이며 소스 통제에 체크인됩니다.

    Jenkinsfile에 구성된 각 루트 수준 스테이지는 개별 단계에 매핑되는 별도의 오케스트레이션 작업 DevOps 으로 검색됩니다.

    주:
    에서 작업 알림을 Jenkins받으려면 파이프라인의 추적 필드를 True로 설정해야 합니다DevOps. 이 필드가 예로 설정되면 모든 활성 Jenkins 구성이 작업 알림을 받게 됩니다.

    DevOps Jenkinsfile 명령

    • snDevOpsChange(ignoreErrors:{true/false},changeRequestDetails:{setCloseCode:{true/false},attributes:})

      여기서 ignoreErrors 는 오류(true/false)가 있는 경우 작업 실패를 방지하는 설정을 지정합니다.

      여기서 changeRequestDetails는 파이프라인 내의 종결 코드 및 변경 요청 필드를 지정합니다.

      단계에 매핑된 각 루트 수준 스테이지에 대한 변경 통제를 DevOps 활성화합니다.

    • snDevOps아티팩트

      구성할 아티팩트 및 패키지때 아티팩트를 등록합니다.

    • snDevOps패키지

      구성할 아티팩트 및 패키지때 아티팩트에 대한 패키지를 작성합니다.

    • snDevOpsGetChangeNumber

      특정 변경 상세 정보를 기반으로 Jenkins 파이프라인에서 변경 요청 번호를 검색합니다.

    • snDevOpsUpdateChangeInfo

      Jenkins 파이프라인과 연결된 변경 요청 상세 정보를 업데이트합니다.

    • snDevOps보안 결과

      파이프라인의 모든 스테이지에서 보안 스캔을 구성하고 스캔 상세 정보는 해당 스테이지에서 DevOps 변경 속도로 검색됩니다.

    파이프라인의 JenkinsconfigurationName 특성을 전달하여 이러한 단계에서 서버 구성을 지정할 수 있습니다. 구성 이름이 어떤 단계에서도 지정되지 않은 경우 해당 단계에서 기본 구성이 사용됩니다. 플러그인을 구성하는 Jenkins 동안 ServiceNow DevOps 오류 무시 옵션을 선택하지 않으면 잘못된 구성 이름을 전달하면 단계가 실패하게 됩니다.

    주:
    스테이지 매핑은 중첩 또는 병렬 스테이지가 아닌 루트 수준의 스테이지에 대해서만 지원됩니다.

    Jenkins 용 스니펫 생성기 DevOps

    스니펫 생성기 유틸리티를 Jenkins 사용하여 스크립팅된 파이프라인의 오케스트레이션 작업에 대한 템플릿 코드를 생성할 수 있습니다. 스니펫 생성기 유틸리티를 사용하여 다음 오케스트레이션 작업에 대한 템플릿을 생성할 수 있습니다.
    • SnDevOps아티팩트
    • SnDevOpsChange
    • SnDevOps패키지
    • snDevOpsGetChangeNumber
    • snDevOpsUpdateChangeInfo
    • snDevOps보안 결과
    단계 스니펫을 생성하려면 구성된 파이프라인에서 파이프라인 구문으로 이동하고, 샘플 단계 목록에서 단계를 선택하고, 단계의 여러 변수에 대한 값을 업데이트합니다. 오류가 있는 경우 작업 실패를 방지하려면 오류 무시 옵션을 선택합니다. 파이프라인 스크립트 생성을 선택하여 코드 조각을 만듭니다. 코드 조각을 복사하여 파이프라인에 붙여넣을 수 있습니다.
    SnDevOpsChange 작업에 대한 파이프라인 스크립트의 예:
    snDevOpsChange changeCreationTimeOut: 3600, changeRequestDetails: '{ "attributes": { "short_description": "Test description", "priority": "1", "start_date": "2021-02-05 08:00:00", "end_date": "2022-04-05 08:00:00", "justification": "test justification", "description": "test description", "cab_required": true, "comments": "This update for work notes is from jenkins file", "work_notes": "test work notes", "assignment_group": "a715cd759f2002002920bde8132e7018" }, "setCloseCode": false, "autoCloseChange": true }', changeStepTimeOut: 18000, configurationName: 'Jenkins1', pollingInterval: 60

    병렬 및 하위 단계 지원

    단계(또는 병렬 단계 집합)가 파이프라인 단계 내에 중첩되는 경우 다음 규칙이 적용됩니다.

    • 중첩 스테이지의 모든 작업은 상위 루트 수준 스테이지의 일부로 처리됩니다
    • 상위 루트 수준 스테이지 아래에 중첩된 여러 스테이지가 변경을 트리거하더라도 변경 요청은 하나만 생성됩니다(상위 루트 수준에서)
    • 생성된 오케스트레이션 작업은 항상 중첩 스테이지가 아닌 상위 루트 수준 스테이지와 연결됩니다.

    하위 스테이지

    이 하위 스테이지 예에서 변경 요청이 하위 스테이지(배포 PROD)에서 생성되면 상위 루트 수준 스테이지(배포)의 세부 정보가 변경 요청에 사용되며 오케스트레이션 작업도 상위 루트 수준 스테이지(배포)와 연결됩니다.

    
    stage("deploy") {
             stages{
                 stage('deploy UAT') {
                    when{
                       branch 'dev'
                    }
                stage('deploy PROD') {
                   when {
                      branch 'master'
                   }
                    steps{
                      
                      snDevOpsChange()              
                    }
                }
            }

    병렬 스테이지

    이 병렬 스테이지 예에서 하위 스테이지(UAT 테스트-1 및/또는 UAT 정적 코드 테스트)에서 변경 요청이 생성된 경우 두 하위 스테이지(UAT 테스트-1 및 UAT 정적 코드 테스트)가 모두 트리거되는지 여부에 관계없이 첫 번째 변경 요청만 생성됩니다(상위 루트 수준 스테이지, UAT 테스트의 상세 정보를 사용).

    어떤 병렬 스테이지에서 변경이 발생했는지는 알 수 없으며, 오케스트레이션 작업은 상위 루트 수준 스테이지(UAT 테스트)와 연결됩니다.

    
    stage('UAT test') {
          parallel {
              stage('UAT test-1') {
                  steps {
                      snDevOpsChange()
                      // 'UAT test-1' tasks
                  }
                    post {
                      success {
                        // post success tasks. E.g.: junit '**/target/surefire-reports/*.xml'
                      }
                  }
              }
              stage('UAT static code test') {
                  steps {
                      snDevOpsChange()
                      // 'UAT static code test' tasks
                  }
              }
          }
     }