での宣言型パイプラインまたはスクリプト化されたパイプラインの使用 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 パイプラインに関連付けられている変更要求の詳細を更新します。
- snDevOpsSecurityResult
パイプラインの任意のステージでセキュリティスキャンを構成し、スキャンの詳細が対応するステージから DevOps チェンジベロシティに取得されます。
パイプラインで configurationName 属性を渡すことで、これらの手順のいずれかで Jenkins サーバー構成を指定できます。どのステップでも構成名が指定されていない場合は、そのステップでデフォルト構成が使用されます。誤った構成名を渡すと、Jenkins プラグインの構成中に [ServiceNow DevOps エラーを無視する] オプションを選択しない限り、ステップは失敗します。
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パラレルステージとサブステージのサポート
ステージ (または並列ステージのセット) がパイプライン ステージ内に入れ子になっている場合、次の規則が適用されます。
- ネストされたステージからのアクションは、親ルートレベルのステージの一部として処理されます
- 親ルートレベルステージの下にネストされた複数のステージによって変更がトリガーされた場合でも、変更要求は (親ルートレベルで) 1 つだけ作成されます
- 作成されたオーケストレーションタスクは、(ネストされたステージではなく) 常に親ルートレベルのステージに関連付けられます
サブステージ
このサブステージの例では、変更要求がサブステージ (展開 PROD) から作成された場合、親ルートレベルステージ (展開) の詳細が変更要求で使用され、オーケストレーションタスクも親ルートレベルステージ (展開) に関連付けられます。
stage("deploy") {
stages{
stage('deploy UAT') {
when{
branch 'dev'
}
stage('deploy PROD') {
when {
branch 'master'
}
steps{
snDevOpsChange()
}
}
}
並列ステージ
この並列ステージの例では、サブステージ (UAT test-1 や UAT 静的コードテスト) から変更要求が作成された場合、両方のサブステージ (UAT test-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
}
}
}
}