GitHub パイプラインアクション

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:14分
  • GitHubパイプラインでこれらのアクションを使用して、DevOps コンフィグデータモデルを操作します。

    重要:
    Washington DC リリース以降、DevOps コンフィグ は将来の廃止に備えて準備されます。これは非表示になり、新しいインスタンスにはインストールされなくなりますが、引き続きサポートされます。詳細については、Now Support ナレッジベースの「Deprecation Process (廃止プロセス) [KB0867184]」の記事を参照してください。

    GitHub スクリプト化されたパイプラインと宣言型パイプラインがサポートされています。

    特定のパイプライン定義を作成するために、 ServiceNow DevOps コンフィグ検証 (servicenow-devops-config-validate) および DevOps コンフィグエクスポート (servicenow-devops-config-export) GitHub アクションが提供されます。

    DevOps コンフィグ検証 (servicenow-devops-config-validate)

    ServiceNowインスタンスに構成データをアップロードして検証します。

    入力引数
    Argument Description (説明)
    instance-url ServiceNowインスタンスの URL です。
    devops-integration-username DevOps コンフィグ 統合ユーザー名。
    devops-integration-user-password DevOps コンフィグ 統合ユーザーパスワード。
    application-name DevOps コンフィグ アプリケーション名。
    target 構成ファイルがアップロードされるデータモデルターゲット。
    データモデルのターゲットの例を次に示します。
    • component
    • collection
    • 展開可能
    deployable-name DevOps コンフィグデータモデル内の展開可能項目名。
    collection-name (オプション)データモデル内のコレクション名。ターゲットがコレクションの場合は必須です。
    名前パス (オプション)名前 構成ファイルがアップロードされるデータモデル内のノードのパス。
    config-file-path 単一のファイルをアップロードするときのファイルパス、または複数のファイルをデータモデルにアップロードするときの Ant スタイルパターンに基づくファイルパスパターン。Apache Ant.1.10.14 マニュアルドキュメントの Ant スタイルのパターンについては、ディレクトリベースのタスクを参照してください。
    データ・フォーマット 構成ファイルのデータ形式。
    データ形式の例は次のとおりです。
    • CSV
    • INI
    • JSON
    • プロパティ
    • RAW
    • XML
    • YAML
    データ形式属性 (オプション)構成データを解析するための拡張データ形式属性。
    自動コミット アップロード成功後に構成データをコミットするためのブール値 (true または false) 入力。

    デフォルト値:True

    自動検証 コミット成功後に構成データを検証するためのブール値 (true または false) 入力。

    デフォルト値:True

    自動公開 検証成功後に構成データを公開するためのブール値 (true または false) 入力。

    デフォルト値:True

    変更セット (オプション)アップロードアクションに関連付けられたオープン変更セット。指定しない場合、新しい変更セットが作成されます。
    snapshot-validation-timeout (オプション)アクションが失敗する前に検証が完了する最大時間 (分)。

    デフォルト値:60

    terminate-on-policy-validation-failures (オプション)ポリシー検証の失敗後に GitHub ワークフローを終了するためのブール値 (true または false) 入力。

    デフォルト値:false

    出力
    changeset-number

    アップロードアクションに関連付けられた変更セット番号。

    snapshot-name

    展開可能項目の最新のスナップショットの名前。

    validation-status

    スナップショットの検証ステータス。例: 合格passed_with_exception不合格execution_errornot_validated

    validation-results

    スナップショットの JSON 形式の検証結果。

    例 — 展開可能項目への構成ファイルのアップロード
    upload_and_validate_job:
        name: Upload and validate
        needs: <upstream job>
        runs-on: ubuntu-latest
        steps:     
          - name: ServiceNow Devops Config Validate
            uses: ServiceNow/servicenow-devops-config-validate@v1.0.0-beta
            with:
              instance-url: ${{ secrets.SN_INSTANCE_URL }}
              devops-integration-username: ${{ secrets.SN_DEVOPS_CONFIG_USERNAME }}
              devops-integration-user-password: ${{ secrets.SN_DEVOPS_CONFIG_PASSWORD }}
              application-name: PaymentDemo
              target: deployable
              deployable-name: Production
              name-path: web-api-v1.0
              auto-commit: true
              auto-validate: true
              auto-publish: true
              config-file-path: data/k8s/helm/*.yml
              data-format: yaml
              snapshot-validation-timeout: 60
              terminate-on-policy-validation-failures: true
    例 — コレクションへの構成ファイルのアップロード
    upload_and_validate_job:
        name: Upload and validate
        needs: <upstream job>
        runs-on: ubuntu-latest
        steps:     
          - name: ServiceNow Devops Config Validate
            uses: ServiceNow/servicenow-devops-config-validate@v1.0.0-beta
            with:
              instance-url: ${{ secrets.SN_INSTANCE_URL }}
              devops-integration-username: ${{ secrets.SN_DEVOPS_CONFIG_USERNAME }}
              devops-integration-user-password: ${{ secrets.SN_DEVOPS_CONFIG_PASSWORD }}
              application-name: PaymentDemo
              target: collection
              deployable-name: Production
              collection-name: release-1.0
              name-path: web-api-v1.0
              auto-commit: true
              auto-validate: true
              auto-publish: true
              config-file-path: data/k8s/helm/*.yml
              data-format: yaml
              snapshot-validation-timeout: 60
              terminate-on-policy-validation-failures: true
    例 — コンポーネントへの構成ファイルのアップロード
    upload_and_validate_job:
        name: Upload and validate
        needs: <upstream job>
        runs-on: ubuntu-latest
        steps:     
          - name: ServiceNow Devops Config Validate
            uses: ServiceNow/servicenow-devops-config-validate@v1.0.0-beta
            with:
              instance-url: ${{ secrets.SN_INSTANCE_URL }}
              devops-integration-username: ${{ secrets.SN_DEVOPS_CONFIG_USERNAME }}
              devops-integration-user-password: ${{ secrets.SN_DEVOPS_CONFIG_PASSWORD }}
              application-name: PaymentDemo
              target: component
              deployable-name: Production
              name-path: web-api-v1.0
              auto-commit: true
              auto-validate: true
              auto-publish: true
              config-file-path: data/k8s/helm/*.yml
              data-format: yaml
              snapshot-validation-timeout: 60
              terminate-on-policy-validation-failures: true
    例 — 1 回のコミットで複数の構成ファイルをアップロードする
    upload_and_validate_job:
        name: Upload and validate
        
        needs: <upstream job>
        runs-on: ubuntu-latest
        # Upload an XML file to a component
        steps:     
          - name: ServiceNow Devops Config Validate
            id: upload_and_validate_xml
            uses: ServiceNow/servicenow-devops-config-validate@v1.0.0-beta
            with:
              instance-url: ${{ secrets.SN_INSTANCE_URL }}
              devops-integration-username: ${{ secrets.SN_DEVOPS_CONFIG_USERNAME }}
              devops-integration-user-password: ${{ secrets.SN_DEVOPS_CONFIG_PASSWORD }}
              application-name: PaymentDemo
              target: component
              deployable-name: Production
              name-path: web-api-v1.0
              auto-commit: false
              auto-validate: true
              auto-publish: true
              config-file-path: data/infra/v1/*.xml
              data-format: xml
              snapshot-validation-timeout: 60
              terminate-on-policy-validation-failures: true
    
        # Upload a JSON file to the vars folder of a deployable
        steps:     
          - name: ServiceNow Devops Config Validate
            id: upload_and_validate_json
            uses: ServiceNow/servicenow-devops-config-validate@v1.0.0-beta
            with:
              instance-url: ${{ secrets.SN_INSTANCE_URL }}
              devops-integration-username: ${{ secrets.SN_DEVOPS_CONFIG_USERNAME }}
              devops-integration-user-password: ${{ secrets.SN_DEVOPS_CONFIG_PASSWORD }}
              application-name: PaymentDemo
              target: component
              deployable-name: Production
              name-path: web-api-v1.0
              auto-commit: true
              auto-validate: true
              auto-publish: true
              config-file-path: data/infra/prod/*.json
              data-format: json
              snapshot-validation-timeout: 60
              terminate-on-policy-validation-failures: true
              changeset : ${{ steps.upload_and_validate_xml.outputs.changeset-number }}

    DevOps コンフィグエクスポート (servicenow-devops-config-export)

    ServiceNow DevOps コンフィグを使用して構成データをエクスポートします。

    入力引数
    Argument Description (説明)
    instance-url ServiceNowインスタンスの URL です。
    devops-integration-username DevOps コンフィグ 統合ユーザー名。
    devops-integration-user-password DevOps コンフィグ 統合ユーザーパスワード。
    application-name DevOps コンフィグ アプリケーション名。
    deployable-name DevOps コンフィグデータモデル内の展開可能項目名。
    exporter-name DevOps コンフィグデータモデルから構成データをエクスポートするエクスポーター名。
    snapshot-name (オプション)データのエクスポート元のスナップショット。スナップショットが指定されていない場合は、展開可能項目の最新のスナップショットが使用されます。
    exporter-data-format (オプション)スナップショットデータをエクスポートする形式。
    データ形式の例は次のとおりです。
    • CSV
    • INI
    • JSON
    • プロパティ
    • RAW
    • XML
    • YAML
    exporter-arguments (オプション)エクスポーターとともに使用される引数。値は、文字列として表される JSON オブジェクトである必要があります。
    出力
    exporter-content

    エクスポーターがエクスポートする構成データ。

    例 — 特定のスナップショットのエクスポート
    export:
        name: Export config
        needs: <upstream job>
        runs-on: ubuntu-latest
        steps:
        - name: ServiceNow DevOps Config Export
          uses: ServiceNow/servicenow-devops-config-export@v1.0.0-beta
          with:
            instance-url: ${{ secrets.SN_INSTANCE_URL }}
            devops-integration-username: ${{ secrets.SN_DEVOPS_CONFIG_USERNAME }}
            devops-integration-password: ${{ secrets.SN_DEVOPS_CONFIG_PASSWORD }}
            application-name: PaymentDemo
            deployable-name: Production
            exporter-name: returnDataforNodeName-now
            snapshot-name: Production-v1.dpl
            exporter-arguments: '{ "nodeName": "node1" }'
    例 — 最新の展開済みスナップショットを追加のパラメーターとともにエクスポートする
    export:
        name: Export config
        needs: <upstream job>
        runs-on: ubuntu-latest
        steps:
        - name: ServiceNow DevOps Config Export
          uses: ServiceNow/servicenow-devops-config-export@v1.0.0-beta
          with:
            instance-url: ${{ secrets.SN_INSTANCE_URL }}
            devops-integration-username: ${{ secrets.SN_DEVOPS_CONFIG_USERNAME }}
            devops-integration-password: ${{ secrets.SN_DEVOPS_CONFIG_PASSWORD }}
            application-name: PaymentDemo
            deployable-name: Production
            exporter-name: returnDataforNodeName-now
            exporter-arguments: '{ "nodeName": "node1" }'
            exporter-data-format: XML