パイプライン内の DevOps 変更要求の詳細の構成

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:8分
  • パイプラインの変更ステップで、パイプライン内からクローズ情報、変更ステータス、および変更要求フィールドを更新する方法を構成します。

    注:
    GitLabパイプライン内からの変更要求の詳細の構成はサポートされていません。

    デフォルトでは、システム変数は、ベースシステムの変更を自動クローズするデフォルトのサブフローを指します。パイプライン完了時の DevOps 自動クローズ変更サブフロー (sn_devops.auto_close_change) は、パイプラインが完了したときにクローズ情報、変更ステータス、および変更要求フィールドを更新する方法を決定します。パイプラインの完了時にアクティブ化する必要があるカスタムサブフローを指定する場合は、このサブフローのクローンを作成し、要件に応じてカスタマイズできます。

    クローズ情報と変更要求属性は、 changeRequestDetails オブジェクトに含まれています。

    自動変更クローズ

    パイプラインから変更を作成する場合は、changeRequestDetails オブジェクトの autoCloseChange パラメーターを true/false に設定して、[ クローズコード ] フィールドと [クローズメモ ] フィールドを更新し、パイプラインの完了時に変更要求をクローズします。[ 実績開始日 ] フィールドと [ 実績終了日 ] フィールドの値も、パイプラインが完了すると更新されます。日付値は、パイプラインの開始時間またはパイプラインの最初のステージの開始時間、およびパイプラインの終了時間またはパイプラインの最後のステージの終了時間に基づいています。クローズメモには、[変更の自動クローズ] 機能に基づいてクローズ情報が更新されたことを示すテキストがサフィックスとして付加されます。

    true に設定すると、[ クローズコード ] フィールドと [ クローズメモ ] フィールドが更新され、パイプラインの完了時に変更要求のクローズが試行されます。

    false に設定すると、パイプラインが完了したときに [ クローズコード ] フィールドと [ クローズメモ ] フィールドが更新されますが、変更要求はクローズされません。

    ServiceNow アプリケーションでパイプラインの [ 変更の自動クローズ ] フィールド値を設定することもできます。[ 変更のみを更新] を選択すると、パイプラインの完了時に [クローズコード ] フィールドと [クローズメモ ] フィールドが更新され、[ 変更を更新してクローズ] を選択すると、クローズ情報の更新とともに変更要求もクローズされます。

    自動クローズの変更がパイプラインまたは列のどちらで指定されているかに基づいて、考慮される最終ステータスは次のようになります。
    変更要求属性の autoCloseChange フラグ 自動クローズ 列値を変更 (sn_devops_pipeline) 最終状況
    正しい 変更のみ更新 変更を更新し、ステータスをクローズに移動
    誤り 変更を更新してクローズ 変更の更新のみ
    - 変更のみ更新 変更の更新のみ
    - 変更を更新してクローズ 変更を更新し、ステータスをクローズに移動
    注:
    パイプラインの autoCloseChange 属性に指定された値は、 ServiceNow の [変更の自動クローズ] 列で指定された値よりも優先されます。
    注:
    • 変更の自動クローズ機能は、単一の変更が作成された基本的なパイプラインにのみ適用されます。複数の変更がある場合、最新の変更が自動クローズの対象と見なされます。
    • 変更の自動クローズ機能は、変更受付機能が有効になっている Jenkins フリースタイル パイプラインと変更要求ではサポートされていません。
    • Azureリリースパイプラインの場合、パイプラインの完了ステータスは、パイプライン内の各ステージのステータスを統合することで派生します。1 つのステージでも失敗した場合、パイプラインは失敗と見なされます。1 つのステージでも部分的に成功した場合、パイプラインは成功したものの成功したと見なされますが、問題があります。

    アップグレード情報

    アップグレードする場合は、 GitHub パイプラインと Azure ビルド パイプラインの autoCloseChange パラメーターを設定する前に、オーケストレーション ツールを再構成する必要があります。

    クローズコードを設定

    目的の動作に基づいて、 setCloseCode: パラメーターを true/false に設定します。デフォルトは true です。

    true に設定すると、変更ステップ属性で指定されたとおりに [ クローズコード ] フィールドと [ クローズメモ ] フィールドが更新され、ステージが完了すると変更要求が実装後に移動されます。この動作を上書きするには、[ コードの自動クローズ ] 機能を有効にします。setCloseCode 機能は、autoCloseChange が有効で true または false に設定されている場合は無効になります。詳細については、「 自動クローズ変更」を参照してください。より正確な変更要求の詳細を得るには、autoCloseChange 機能を使用します。

    false に設定すると、ジョブまたはパイプラインが完了しても、変更要求は更新されず、[実装] ステータスのままになります。

    • 変更要求のクローズ情報が設定されていない ([クローズコード ] フィールドと [クローズメモ ] フィールドが空のまま)。
    • ステップ実行へのリンクが 作業メモに追加されます。

    変更要求フィールド

    指定された変更要求テンプレートのパイプライン内で変更要求フィールド値を設定します。
    注:
    • 指定したフィールドに必須の依存フィールドがある場合は、その属性も設定する必要があります。
    • 依存する必須フィールドの属性が設定されていない場合、変更要求と関連するステップ実行はキャンセルされ、作業メモが更新されます。

    attributes:パラメーター内のフィールド値は、キーと値のペアです。つまり、キーはテンプレート内のフィールド名で、値はフィールドに入力する情報です。

    changeControl API を使用して、typecmdb_citemplateassignment_group business_servicestandard_change_templatechg_modelなどのフィールドを指定し、変更要求を作成できます。

    変更のために属性が渡される場合、優先度の順序は次のとおりです。

    1. 変更要求フィールドまたは changeControl API。
    2. ステップレコードの値。
    3. 変更要求テンプレートで指定された値。
    注:
    パイプライン内から変更要求を構成する場合、変更タイプとテンプレートフィールドは常に 1 つのソースから取得されます。API 要求と変更要求フォームの属性を組み合わせて使用することはできません。

    指定された場合を除き、変更要求 [change_request] テーブルのすべてのフィールドがサポートされます。

    表 : 1. サポートされている変更要求フィールド
    サポートされていないフィールド
    • risk
    • 影響
    • 番号
    • sys_id
    • risk_impact_analysis
    サポートされているフィールド 変更要求 [change_request] テーブルの残りのすべてのフィールド。
    注:
    属性名は変更要求フィールド名と一致する必要があり、指定された値は有効である必要があります。

    サンプル JSON ペイロード

    {
       "callbackURL":"http://192.168.0.4:3000/jenkins/sn-devops/pipeline_839b7605-b98d-4831-bc87-96829de7da37",
       "orchestrationTaskURL":"http://192.168.0.4:3000/jenkins/job/java_sample_tests#deploy/",
       "isMultiBranch":"false",
       "orchestrationTaskName":"java_sample_tests#deploy",
       "orchestrationTaskDetails":{
          "triggerType":"upstream",
          "upstreamTaskExecutionURL":"http://192.168.0.4:3000/jenkins/job/java_sample_tests/129/execution/node/35/wfapi/describe",
          "taskExecutionURL":"http://192.168.0.4:3000/jenkins/job/java_sample_tests/129/execution/node/50/wfapi/describe"
       },
       "changeRequestDetails":{
          "setCloseCode":false,
          "attributes":{
             "sys_created_by":"1832fbe1d701120035ae23c7ce610369",
             "sys_updated_by":"56826bf03710200044e0bfc8bcbe5dca",
             "requested_by":{
                "name":"Abel Tuter"
             },
             "watch_list":[
                {
                   "name":"Abel Tuter"
                },
                {
                   "name":"Aileen Mottern"
                },
                {
                   "name":"Alejandra Prenatt"
                },
                "56826bf03710200044e0bfc8bcbe5dca"
             ],
             "work_notes_list":[
                "56826bf03710200044e0bfc8bcbe5dca",
                "46c6f9efa9fe198101ddf5eed9adf6e7",
                "d8f57f140b20220050192f15d6673a98"
             ],
             "assigned_to":"1832fbe1d701120035ae23c7ce610369",
             "category":"Service",
             "sys_created_on":"2021-02-09 18:58:41",
             "priority":"2",
          }
       }
    }

    パイプラインの例

    図 : 1. 変更要求の詳細:Azure パイプライン
    DevOps Azure 変更の詳細。
    図 : 2. ジョブレベル設定 — Jenkins
    JenkinsJobSettings。
    図 : 3. 変更要求の詳細: Jenkins
    DevOps Jenkins 変更の詳細。
    図 : 4. 変更要求の詳細:GitHub
    DevOps GitHub 変更の詳細。