---
sourceDocument: Xanadu IT Service Management
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/it-service-management

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu IT Service Management

ft:clusterId :

    - itsm

bundleId :

    - itsm

workflow :

    - Technology


---

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

# での宣言型パイプラインまたはスクリプト化されたパイプラインの使用 DevOps {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：6分

Jenkinsfile を使用すると、ステップは手動ではなく自動的に作成、マッピングされ、オーケストレーションタスクに関連付けられます。

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

Jenkinsfile で構成された各ルートレベルのステージは、個々のステップにマッピングされた個別のオーケストレーションタスクとして DevOps で検出されます。  
注:  
Jenkinsからジョブ通知を受信するには、パイプラインの \[追跡\] フィールドを DevOps で True に設定する必要があります。このフィールドが True に設定されている場合、すべてのアクティブな Jenkins 構成でジョブ通知が送信されます。

## DevOps Jenkinsfile コマンド {#dev-ops-scripted-pipeline__section_ccb_2yn_r3b}

* snDevOpsChange(ignoreErrors:{true/false},changeRequestDetails:{setCloseCode:{true/false},attributes:})

  ここで、 ignoreErrors は、エラーが発生した場合にジョブの失敗を防ぐための設定を指定します (true/false)

  ここで、changeRequestDetails は、パイプライン内からの[クローズ コードと変更要求フィールド](https://servicenow-prod.fluidtopics.net/~k56n2JpbhUneOCLEUkJRw "パイプラインの変更ステップで、パイプライン内からクローズ情報、変更ステータス、および変更要求フィールドを更新する方法を構成します。")を指定します

  DevOpsステップにマップされている各ルートレベルステージの変更管理を有効にします。
* snDevOps アーティファクト

  [アーティファクトとパッケージ](https://servicenow-prod.fluidtopics.net/RFcN6c9~OkGPE3GnCD0fTA "アーティファクトとパッケージを使用すると、 DevOps チェンジベロシティ は幅広い展開モデルとリリースモデルにわたって開発とテストのアクティビティを追跡できます。この機能により、 DevOps データモデルに格納されているパイプラインアクティビティは、アーティファクトが異なるタイミングまたは異なるパイプラインで作成およびリリースされたときに取得して適用できます。")の構成時にアーティファクトを登録します。
* snDevOps パッケージ

  [アーティファクトとパッケージ](https://servicenow-prod.fluidtopics.net/RFcN6c9~OkGPE3GnCD0fTA "アーティファクトとパッケージを使用すると、 DevOps チェンジベロシティ は幅広い展開モデルとリリースモデルにわたって開発とテストのアクティビティを追跡できます。この機能により、 DevOps データモデルに格納されているパイプラインアクティビティは、アーティファクトが異なるタイミングまたは異なるパイプラインで作成およびリリースされたときに取得して適用できます。")を構成するときにアーティファクトのパッケージを作成します。
* snDevOpsGetChangeNumber

  特定の変更の詳細に基づいて、Jenkins パイプライン内の変更要求番号を取得します。
* snDevOpsUpdateChangeInfo

  Jenkins パイプラインに関連付けられている変更要求の詳細を更新します。
* snDevOpsSecurityResult

  パイプラインの任意のステージでセキュリティスキャンを構成し、スキャンの詳細が対応するステージから DevOps チェンジベロシティに取得されます。
{#dev-ops-scripted-pipeline__ul_kbx_py3_r3b}

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

## Jenkins のスニペットジェネレーター DevOps {#dev-ops-scripted-pipeline__section_vcx_kgw_f5b}

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

* SnDevOps アーティファクト
* SnDevOps の変更
* SnDevOps パッケージ
* snDevOpsGetChangeNumber
* snDevOpsUpdateChangeInfo
* snDevOpsSecurityResult

{#dev-ops-scripted-pipeline__ul_i1g_fjw_f5b}ステップスニペットを生成するには、構成されたパイプラインからパイプライン構文に移動し、\[ サンプルステップ \] リストからステップを選択して、ステップ内のさまざまな変数の値を更新します。エラーがある場合にジョブが失敗しないようにするには、\[ エラーを無視する \] オプションを選択します。\[ パイプラインスクリプトを生成 \] を選択してスニペットを作成します。スニペットをコピーしてパイプラインに貼り付けることができます。  
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

## パラレルステージとサブステージのサポート {#dev-ops-scripted-pipeline__section_yyr_gvy_jjb}

ステージ (または並列ステージのセット) がパイプライン ステージ内に入れ子になっている場合、次の規則が適用されます。  
* ネストされたステージからのアクションは、親ルートレベルのステージの一部として処理されます
* 親ルートレベルステージの下にネストされた複数のステージによって変更がトリガーされた場合でも、変更要求は (親ルートレベルで) 1 つだけ作成されます
* 作成されたオーケストレーションタスクは、(ネストされたステージではなく) 常に親ルートレベルのステージに関連付けられます
{#dev-ops-scripted-pipeline__ul_yb1_5xy_jjb}  

## サブステージ {#dev-ops-scripted-pipeline__example_vxg_yty_2bc}

このサブステージの例では、変更要求がサブステージ (展開 PROD) から作成された場合、親ルートレベルステージ (展開) の詳細が変更要求で使用され、オーケストレーションタスクも親ルートレベルステージ (展開) に関連付けられます。  


    stage("deploy") {
             stages{
                 stage('deploy UAT') {
                    when{
                       branch 'dev'
                    }
                stage('deploy PROD') {
                   when {
                      branch 'master'
                   }
                    steps{
                      
                      snDevOpsChange()              
                    }
                }
            }

## 並列ステージ {#dev-ops-scripted-pipeline__example_wxg_yty_2bc}

この並列ステージの例では、サブステージ (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
                  }
              }
          }
     }


