DevOps에서 선언적 또는 스크립팅된 파이프라인 사용
Jenkinsfile을 사용하면 단계가 수동 대신 자동으로 생성, 매핑 및 오케스트레이션 작업에 연결됩니다.
Jenkinsfile은 파이프라인의 정의 Jenkins 를 포함하고 소스 통제로 체크인된 텍스트 파일입니다.
Jenkinsfile에 구성된 각 루트 수준 스테이지는 개별 단계에 매핑되는 별도의 오케스트레이션 작업 DevOps 으로 검색됩니다.
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
- SnDevOps아티팩트
- SnDevOps변경
- SnDevOps패키지
- snDevOpsGetChangeNumber
- snDevOpsUpdateChangeInfo
- snDevOpsSecurityResult
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
}
}
}
}