---
sourceDocument: Australia IT Service Management
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/it-service-management

 Release :

    - australia

ft:locale :

    - en-US

ft:publication_title :

    - Australia IT Service Management

ft:clusterId :

    - itsm

bundleId :

    - itsm

workflow :

    - Technology


---

# GitHub pipeline actions

# GitHub pipeline actions {#ariaid-title1}

Release version: Australia  
Updated March 12, 2026  
![](https://www.servicenow.com/docs/portal-asset/ico-clock) 4 minutes to read  
Use these actions in your GitHub pipeline to interact with the DevOps Config data model.  
Important:  
Starting with the Washington D.C. release, DevOps Config is being prepared for future deprecation. It will be hidden and no longer activated on new instances but will continue to be supported.

GitHub scripted and declarative pipelines are supported.

The ServiceNow DevOps Config Validate (servicenow-devops-config-validate) and DevOps Config Export (servicenow-devops-config-export) GitHub Actions are provided to create a specific pipeline definition.

## DevOps Config Validate (servicenow-devops-config-validate) {#devops-config-github-integration__section_rsc_wdj_psb}

Upload and validate configuration data in a ServiceNow instance.

Input arguments
:   {#devops-config-github-integration__table_k3q_bf4_tzb__entry__2}

    | Argument | Description |
    |-|-|
    | instance-url | ServiceNow instance URL. |
    | devops-integration-username | DevOps Config integration username. |
    | devops-integration-user-password | DevOps Config integration user password. |
    | application-name | DevOps Config application name. |
    | target | Data model target where configuration files are uploaded. Example data model targets are: * `component` * `collection` * `deployable` {#devops-config-github-integration__ul_yrv_h34_tzb} |
    | deployable-name | Deployable name in the DevOps Config data model. |
    | collection-name | (Optional) Collection name in the data model. Required when target is collection. |
    | name-path | (Optional) Name path of the node in the data model where the configuration files are uploaded. |
    | config-file-path | File path when uploading a single file or file path pattern based on the Ant-style pattern when uploading multiple files to the data model. See [Directory-based Tasks](https://ant.apache.org/manual/dirtasks.html) for information on Ant-style patterns in the Apache Ant.1.10.14 Manual documentation. |
    | data-format | Data format of the configuration files. Example data formats are: * `CSV` * `INI` * `JSON` * `Properties` * `RAW` * `XML` * `YAML` {#devops-config-github-integration__ul_vpc_rg4_tzb} |
    | data-format-attribute | (Optional) Extended data format attributes for parsing configuration data. |
    | auto-commit | Boolean (true or false) input to commit configuration data after successful upload. Default value: `true` |
    | auto-validate | Boolean (true or false) input to validate configuration data after successful commit. Default value: `true` |
    | auto-publish | Boolean (true or false) input to publish configuration data after successful validation. Default value: `true` |
    | changeset | (Optional) Open changeset associated with the upload action. If not provided, a new changeset is created. |
    | snapshot-validation-timeout | (Optional) Maximum time in minutes for validation to complete before failing the action. Default value: `60` |
    | terminate-on-policy-validation-failures | (Optional) Boolean (true or false) input to terminate the GitHub workflow after policy validation failures. Default value: `false` |
    [ ]

    {#devops-config-github-integration__table_k3q_bf4_tzb}

Outputs
:

    changeset-number

    :   Changeset number associated with the upload action.

    snapshot-name

    :   Name of the latest snapshot of the deployable.

    validation-status

    :   Validation status of the snapshot. Example: `passed`, `passed_with_exception`, `failed`, `execution_error`,
        `not_validated`

    validation-results

    :   Validation results in the JSON format for the snapshot.

Example --- Uploading config files to a deployable{#devops-config-github-integration__example-snapshot}
:

        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

Example --- Uploading config files to a collection
:

        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

Example --- Uploading config files to a component
:

        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

Example --- Uploading multiple config files in a single commit
:

        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 Config Export (servicenow-devops-config-export) {#devops-config-github-integration__section_ynh_3nq_11c}

Export configuration data using ServiceNow
DevOps Config.

Input arguments
:   {#devops-config-github-integration__table_znh_3nq_11c__entry__2}

    | Argument | Description |
    |-|-|
    | instance-url | ServiceNow instance URL. |
    | devops-integration-username | DevOps Config integration username. |
    | devops-integration-user-password | DevOps Config integration user password. |
    | application-name | DevOps Config application name. |
    | deployable-name | Deployable name in the DevOps Config data model. |
    | exporter-name | Exporter name that exports configuration data from the DevOps Config data model. |
    | snapshot-name | (Optional) Snapshot from which to export data. If a snapshot is not specified, the latest snapshot for the deployable is used. |
    | exporter-data-format | (Optional) Format to export the snapshot data. Example data formats are: * `CSV` * `INI` * `JSON` * `Properties` * `RAW` * `XML` * `YAML` {#devops-config-github-integration__ul_srz_khv_11c} |
    | exporter-arguments | (Optional) Arguments to be used along with the exporter. The value must be a JSON object represented as a string. |
    [ ]

    {#devops-config-github-integration__table_znh_3nq_11c}

Output
:

    exporter-content

    :   Configuration data that the exporter exports.

Example --- Export specific snapshot
:

        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" }'

Example --- Export the latest deployed snapshot with additional parameters
:

        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


