Skip to content
Release: Australia · Updated: 2026-03-12 · Official documentation · View source

GitHub pipeline actions

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)

Upload and validate configuration data in a ServiceNow instance.

  • Input arguments
ArgumentDescription
instance-urlServiceNow instance URL.
devops-integration-usernameDevOps Config integration username.
devops-integration-user-passwordDevOps Config integration user password.
application-nameDevOps Config application name.
targetData model target where configuration files are uploaded. Example data model targets are: - `component` - `collection` - `deployable`
deployable-nameDeployable 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-pathFile 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 for information on Ant-style patterns in the Apache Ant.1.10.14 Manual documentation.
data-formatData format of the configuration files. Example data formats are: - `CSV` - `INI` - `JSON` - `Properties` - `RAW` - `XML` - `YAML`
data-format-attribute\(Optional\) Extended data format attributes for parsing configuration data.
auto-commitBoolean \(true or false\) input to commit configuration data after successful upload.Default value: `true`
auto-validateBoolean \(true or false\) input to validate configuration data after successful commit.Default value: `true`
auto-publishBoolean \(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`
  • 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

    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)

Export configuration data using ServiceNow DevOps Config.

  • Input arguments
ArgumentDescription
instance-urlServiceNow instance URL.
devops-integration-usernameDevOps Config integration username.
devops-integration-user-passwordDevOps Config integration user password.
application-nameDevOps Config application name.
deployable-nameDeployable name in the DevOps Config data model.
exporter-nameExporter 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`
exporter-arguments\(Optional\) Arguments to be used along with the exporter. The value must be a JSON object represented as a string.
  • 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