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