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

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

    Jenkinsfile은 파이프라인의 정의 Jenkins 를 포함하고 소스 통제로 체크인된 텍스트 파일입니다.

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

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

    DevOps Jenkinsfile 명령

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

      여기서 ignoreErrors 는 오류가 발생할 경우 작업 실패를 방지하기 위한 설정을 지정합니다(예/아니오).

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

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

    • snDevOps아티팩트

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

    • snDevOps패키지

      구성 아티팩트 및 패키지시 아티팩트에 대한 패키지를 생성합니다.

    • snDevOpsGetChangeNumber

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

    • snDevOpsUpdateChangeInfo

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

    • snDevOpsSecurityResult

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

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

    주:
    스테이지 매핑은 루트 수준의 스테이지에 대해서만 지원되며 중첩 또는 병렬 스테이지에는 지원되지 않습니다.

    Jenkins 용 스니펫 생성기 DevOps

    스니펫 생성기 유틸리티를 사용하여 Jenkins 스크립팅된 파이프라인에 대한 오케스트레이션 작업에 대한 템플릿 코드를 생성할 수 있습니다. 스니펫 생성기 유틸리티를 사용하여 다음 오케스트레이션 작업에 대한 템플릿을 만들 수 있습니다.
    • SnDevOps아티팩트
    • SnDevOps변경
    • 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
                  }
              }
          }
     }