で宣言型パイプラインまたはスクリプト化されたパイプラインを使用する DevOps

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:6分
  • Jenkinsfile を使用すると、ステップは手動ではなく自動的に作成、マッピングされ、オーケストレーションタスクに関連付けられます。

    Jenkinsfile は、 Jenkins パイプラインの定義を含むテキスト ファイルであり、ソース管理にチェックインされます。

    Jenkinsfile で構成された各ルートレベルのステージは、個々のステップにマッピングされた DevOps 内の個別のオーケストレーションタスクとして検出されます。

    注:
    Jenkins からジョブ通知を受信するには、DevOps でパイプラインの [追跡] フィールドを True に設定する必要があります。このフィールドが 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 変更速度管理に取得されます。

    パイプラインで configurationName 属性を渡すことで、これらの手順のいずれかで Jenkins サーバー構成を指定できます。構成名がどのステップでも指定されていない場合は、そのステップでデフォルト構成が使用されます。Jenkins プラグインの構成中に [ServiceNow DevOps エラーを無視する] オプションを選択しない限り、誤った構成名を渡すとステップは失敗します。

    注:
    ステージマッピングは、ルートレベルのステージでのみサポートされており、ネストされたステージまたは並列ステージではサポートされていません。

    Jenkins のスニペットジェネレーター DevOps

    Jenkinsスニペットジェネレーターユーティリティを使用して、スクリプト化されたパイプラインのオーケストレーションタスクのテンプレートコードを生成できます。スニペットジェネレーターユーティリティを使用して、次のオーケストレーションタスクのテンプレートを作成できます。
    • SnDevOpsArtifact
    • SnDevOpsChange
    • SnDevOpsPackage
    • 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

    並列およびサブステージのサポート

    ステージ (または並列ステージのセット) がパイプライン ステージ内で入れ子になっている場合、次の規則が適用されます。

    • ネストされたステージのすべてのアクションは、親ルートレベルステージの一部として処理されます
    • 親ルートレベルのステージの下にネストされた複数のステージが変更をトリガーした場合でも、(親ルートレベルで) 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 test の詳細を使用して) 作成されます。

    どの並列ステージが変更を生成したかは示されず、オーケストレーション タスクは親ルート レベル ステージ (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
                  }
              }
          }
     }