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

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 5분
  • Jenkinsfile을 사용하면 단계가 수동이 아닌 자동으로 생성, 매핑 및 오케스트레이션 작업에 연결됩니다.

    Jenkinsfile은 파이프라인의 정의를 Jenkins 포함하고 소스 제어에 체크인되는 텍스트 파일입니다.

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

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

    DevOps Jenkinsfile 명령

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

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

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

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

    • snDevOps아티팩트

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

    • snDevOps패키지

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

    • snDevOpsGetChangeNumber

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

    • snDevOpsUpdateChangeInfo

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

    • snDevOpsSecurityResult

      파이프라인의 모든 단계에서 보안 검사를 구성하고, 검사 상세 정보는 DevOps 변경 속도에 해당하는 단계에서 검색됩니다.

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

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

    Jenkins 용 스니펫 생성기 DevOps

    스니펫 생성기 유틸리티를 사용하여 Jenkins 스크립팅된 파이프라인의 오케스트레이션 작업에 대한 템플릿 코드를 생성할 수 있습니다. 스니펫 생성기 유틸리티를 사용하여 다음 오케스트레이션 작업에 대한 템플릿을 생성할 수 있습니다.
    • SnDevOpsArtifact
    • SnDevOpsChange
    • SnDevOps패키지
    • snDevOpsGetChangeNumber
    • snDevOpsUpdateChangeInfo
    • snDevOpsSecurityResult
    단계 스니펫을 생성하려면 구성된 파이프라인에서 파이프라인 구문으로 이동하고, 샘플 단계 목록에서 단계를 선택하고, 단계에서 다른 변수의 값을 업데이트합니다. 오류가 발생한 경우 작업 실패를 방지하려면 오류 무시 옵션을 선택합니다. 파이프라인 스크립트 생성을 선택하여 스니펫을 생성합니다. 스니펫을 복사하여 파이프라인에 붙여넣을 수 있습니다.
    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

    병렬 및 하위 스테이지 지원

    스테이지(또는 병렬 스테이지 세트)가 파이프라인 스테이지 내에 중첩되면 다음 규칙이 적용됩니다.

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

    하위 스테이지

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

    
    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
                  }
              }
          }
     }