Skip to main content
InProd Logo
Genesys Cloud CI/CD with Azure DevOps and InProd

Genesys Cloud CI/CD with Azure DevOps and InProd

Jarrod Neven··
Genesys CloudAzure DevOpsCI/CDDevOps

Genesys Cloud CI/CD with Azure DevOps uses Azure Pipelines to validate, approve, and deploy InProd changesets through Development, UAT, and Production. Azure DevOps provides YAML pipelines, variable groups, pipeline templates, stages, environments, approval checks, output variables, and artifacts. InProd provides the Genesys Cloud-specific controls: changeset validation, environment targeting, execution results, audit history, drift visibility, and rollback.

The SEO target is a high-intent cluster: Genesys Cloud CI/CD with Azure DevOps, Azure Pipelines Genesys Cloud, InProd changesets Azure DevOps, Genesys Cloud DevOps automation, and Genesys Cloud configuration as code. The audience is usually already operating Microsoft delivery tooling and wants contact center configuration releases to meet the same governance standard as application releases.

The official InProd Azure DevOps guide uses the @inprod.io/run-changesets npm package through an Azure Pipelines step template. That template is the key differentiator for this article: Azure DevOps should orchestrate stages and approvals, while the InProd template provides repeatable Genesys Cloud deployment behavior.

Genesys Cloud CI/CD with Azure DevOps

Azure Pipelines is designed for building, testing, and deploying through YAML-defined pipelines. Microsoft describes Azure Pipelines as a CI/CD service that supports pipelines, jobs, stages, and deployment targets. For Genesys Cloud teams, those capabilities become valuable when they are attached to a release artifact that InProd understands.

In a practical Azure DevOps pipeline:

  1. InProd changeset files are stored in a repository.
  2. Pull request validation runs with validateOnly: true.
  3. A merge to main deploys to Development.
  4. Azure DevOps Environments gate UAT and Production with approval checks.
  5. The InProd template validates before execution.
  6. The template publishes INPROD_STATUS as an output variable.
  7. inprod-result.json is published as a pipeline artifact.
  8. InProd preserves the Genesys Cloud configuration audit trail and rollback context.

This is the production-ready answer to "Can Azure DevOps deploy Genesys Cloud configuration?" Yes, but the pipeline should validate, gate, record, and recover. A raw script is only the first inch of the journey.

Why Use the InProd Azure Pipelines Template?

Azure DevOps can call npx --yes @inprod.io/run-changesets directly, but the template gives teams a standard deployment step. Standardization matters when multiple repositories, teams, or contact center domains are making configuration changes.

Azure DevOps feature InProd template role
YAML stages and jobs Provides consistent changeset execution inside each stage
Variable groups and secret variables Maps InProd credentials safely into the runner environment
Environments and approval checks Gates UAT and Production deployment
Output variables Publishes aggregate InProd status
Pipeline artifacts Publishes inprod-result.json for release evidence
Repository resources Lets teams reference the official template from GitHub

The template helps prevent every team from inventing a slightly different shell step for the same high-risk production operation.

Azure DevOps Prerequisites

Create secret pipeline variables or a variable group containing:

Variable Purpose
INPROD_API_KEY InProd API key
INPROD_BASE_URL Base URL of the InProd instance

Azure Pipelines does not automatically pass secret variables to scripts. The InProd Azure template handles the environment mapping, so the implementation task is mostly to define the variables correctly and mark them secret.

The official template can be referenced from the inprod/run-changesets GitHub repository or copied into your own repository. Referencing a tagged version is usually better for maintainability:

resources:
  repositories:
    - repository: inprod_templates
      type: github
      name: inprod/run-changesets
      ref: refs/tags/v1.0.0
      endpoint: your-github-service-connection

If your organization restricts external template references, copy the template into a shared internal repository and reference it from there.

Quick Start Azure Pipeline

A minimal deployment uses the template step with a changeset file and target environment:

trigger:
  - main

pool:
  vmImage: ubuntu-latest

variables:
  - group: inprod-credentials

resources:
  repositories:
    - repository: inprod_templates
      type: github
      name: inprod/run-changesets
      ref: refs/tags/v1.0.0
      endpoint: your-github-service-connection

steps:
  - template: templates/azure-pipelines-run-changesets.yml@inprod_templates
    parameters:
      changesetFile: changesets/queues.yaml
      environment: Production

This proves the wiring, but a production workflow should split validation, Development, UAT, and Production into stages.

Pull Request Validation

Pull request validation should not execute changes. It should prove the proposed changeset can be understood and validated before merge:

pr:
  - main

pool:
  vmImage: ubuntu-latest

variables:
  - group: inprod-credentials

steps:
  - template: templates/azure-pipelines-run-changesets.yml@inprod_templates
    parameters:
      changesetFile: changesets/*.yaml
      validateOnly: true

This is where Azure DevOps becomes a governance surface for Genesys Cloud. Reviewers see a validation result attached to the proposed change before UAT or Production is touched.

Multi-Stage Azure DevOps Pipeline

Use stages and Azure DevOps Environments for the full release path:

trigger:
  - main

pool:
  vmImage: ubuntu-latest

variables:
  - group: inprod-credentials

stages:
  - stage: Validate
    jobs:
      - job: ValidateChangesets
        steps:
          - template: templates/azure-pipelines-run-changesets.yml@inprod_templates
            parameters:
              changesetFile: changesets/*.yaml
              validateOnly: true

  - stage: DeployDev
    dependsOn: Validate
    jobs:
      - job: DeployDev
        steps:
          - template: templates/azure-pipelines-run-changesets.yml@inprod_templates
            parameters:
              changesetFile: changesets/*.yaml
              environment: Development
              executionStrategy: validate_first

  - stage: DeployUAT
    dependsOn: DeployDev
    jobs:
      - deployment: DeployUAT
        environment: UAT
        strategy:
          runOnce:
            deploy:
              steps:
                - template: templates/azure-pipelines-run-changesets.yml@inprod_templates
                  parameters:
                    changesetFile: changesets/*.yaml
                    environment: UAT
                    executionStrategy: validate_first

  - stage: DeployProd
    dependsOn: DeployUAT
    jobs:
      - deployment: DeployProd
        environment: Production
        strategy:
          runOnce:
            deploy:
              steps:
                - template: templates/azure-pipelines-run-changesets.yml@inprod_templates
                  parameters:
                    changesetFile: changesets/*.yaml
                    environment: Production
                    executionStrategy: validate_first

Configure approval checks on the UAT and Production Environments in Azure DevOps. The YAML should describe the release path; the environment settings should enforce who can approve the sensitive stages.

Template Parameters That Matter

The InProd Azure template exposes parameters that map cleanly to the release model:

Parameter Why it matters
changesetFile File or glob pattern to deploy
environment Target Development, UAT, or Production by name or ID
validateOnly Runs validation without execution for PRs and scheduled checks
validateBeforeExecute Keeps a pre-execution validation gate in every deployment
executionStrategy Use validate_first when all files should pass before any execute
failFast Stops batch processing on first failure when appropriate
changesetVariables Injects runtime values from Azure variables without hard-coding secrets
pollingTimeoutMinutes Gives larger changesets enough time to complete
nodeVersion Controls the Node.js version installed by the template

For production deployments, the default recommendation is validateBeforeExecute: true and executionStrategy: validate_first.

Output Variables and Artifacts

The Azure template publishes an output variable named INPROD_STATUS through a step named PublishStatus. It also publishes inprod-result.json as a pipeline artifact.

Use the status in a downstream job:

jobs:
  - job: Deploy
    steps:
      - template: templates/azure-pipelines-run-changesets.yml@inprod_templates
        parameters:
          changesetFile: changesets/queues.yaml
          environment: Production

  - job: Notify
    dependsOn: Deploy
    condition: always()
    variables:
      inprodStatus: $[ dependencies.Deploy.outputs['PublishStatus.INPROD_STATUS'] ]
    steps:
      - script: echo "InProd deployment status: $(inprodStatus)"

For audit and troubleshooting, download the result artifact in downstream jobs or attach it to your change-management record.

Variable Injection

Use changesetVariables to pass environment-specific values at runtime:

steps:
  - template: templates/azure-pipelines-run-changesets.yml@inprod_templates
    parameters:
      changesetFile: changesets/queues.yaml
      environment: Production
      changesetVariables: |
        DATABASE_PASSWORD=$(DB_PROD_PASSWORD)
        API_ENDPOINT=https://api.example.com

Do not store production secrets in changeset files. Keep changesets reviewable, and inject sensitive values from Azure secret variables or variable groups.

Drift Detection and Scheduled Validation

Azure DevOps schedules can run validate-only jobs against Production. This is useful when Genesys Cloud can change outside the pipeline through emergency Admin UI updates or operational fixes.

Scheduled validation does not replace Genesys Cloud configuration auditing, but it supports the same governance goal: catch drift before a production release assumes the target environment is clean.

For enterprise teams, connect scheduled validation results to the broader Genesys Cloud CI/CD validation and promotion model. The release should pause when Production has diverged from the expected state.

Rollback Model

Azure DevOps makes it easy to create a rollback stage or manual pipeline. Use that power carefully. For high-risk Genesys Cloud changes, define rollback changesets before production deployment and store them in Git.

A rollback pipeline should:

  • Use a dedicated rollback changeset file.
  • Require a Production environment approval.
  • Use the same InProd template as normal deployment.
  • Archive the rollback result artifact.
  • Link the rollback run to the original failed release.

This gives operations teams a recovery path without bypassing audit.

Production Readiness Checklist

  • Store InProd credentials in secret variables or a variable group.
  • Reference the InProd template from a pinned tag or approved internal copy.
  • Run pull request validation with validateOnly: true.
  • Use stages for Validate, Development, UAT, and Production.
  • Configure Azure Environment approvals for UAT and Production.
  • Use executionStrategy: validate_first for multi-file releases.
  • Publish and retain inprod-result.json.
  • Use INPROD_STATUS for notification and incident workflows.
  • Schedule validate-only checks for drift.
  • Keep rollback changesets and recovery approvals ready.

FAQ

Can Azure DevOps deploy Genesys Cloud configuration?

Yes. Azure Pipelines can use the InProd Azure template to validate and execute InProd changesets against Genesys Cloud environments.

What is the target keyword?

The primary keyword is Genesys Cloud CI/CD with Azure DevOps. Secondary phrases include Azure Pipelines Genesys Cloud, InProd changesets Azure DevOps, Genesys Cloud DevOps automation, and Genesys Cloud configuration as code.

Why use the InProd Azure template instead of a script?

The template standardizes credential mapping, Node.js setup, changeset execution, output variables, and artifact publishing so every team uses the same deployment pattern.

Can Azure DevOps approvals gate Production?

Yes. Configure approval checks on Azure DevOps Environments and use deployment jobs for UAT and Production stages.

Does this replace Terraform or CX as Code?

No. It complements Genesys Cloud CX as Code, Terraform, and Genesys Cloud DevOps automation by adding a governed InProd changeset deployment path.

Read the InProd Azure DevOps guide, Microsoft's Azure Pipelines overview, and InProd's guides to Genesys Cloud CI/CD with CX as Code and Terraform, configuration auditing, and DevOps automation. To map Azure DevOps into your Genesys Cloud release process, book a call.

Jarrod Neven

Jarrod Neven

Contact Center Expert, Director at InProd Solutions

Jarrod has been working in the enterprise CX space since 2001. Before starting InProd, he spent several years as a CTI Solutions Architect at Genesys itself, working across the APAC region with enterprise and government customers — which gives him a different perspective on how their platforms actually work under the hood. He's been Director at InProd Solutions since 2016, helping organizations cut through the complexity of Genesys Engage deployments.