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

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

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

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

    注:
    Jenkinsからジョブ通知を受信するには、パイプラインの [追跡] フィールドを DevOpsTrue に設定する必要があります。このフィールドが 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 スニペットジェネレーターユーティリティを使用して、スクリプト化されたパイプラインのオーケストレーションタスクのテンプレートコードを生成できます。スニペットジェネレーターユーティリティを使用して、次のオーケストレーションタスクのテンプレートを作成できます。
    • 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

    パラレルステージとサブステージのサポート

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

    • ネストされたステージからのアクションは、親ルートレベルのステージの一部として処理されます
    • 親ルートレベルステージの下にネストされた複数のステージによって変更がトリガーされた場合でも、変更要求は (親ルートレベルで) 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
                  }
              }
          }
     }