Genesys Cloud CI/CD Pipeline with CircleCI and InProd
A Genesys Cloud CI/CD pipeline with CircleCI uses CircleCI workflows to validate, approve, and deploy InProd changesets across Development, UAT, and Production. CircleCI provides the YAML workflow, branch filters, contexts, approval jobs, artifacts, and scheduled pipelines. InProd provides the Genesys Cloud-specific deployment controls: changeset validation, environment targeting, execution status, configuration audit history, drift visibility, and rollback.
This article targets a narrow but valuable search pattern: Genesys Cloud CI/CD with CircleCI, CircleCI Genesys Cloud automation, InProd changesets CircleCI, and Genesys Cloud configuration as code. The search volume is small, but the intent is strong. A person searching for this topic is usually not researching generic DevOps. They are trying to make contact center configuration changes move through a real pipeline without losing governance.
The official InProd CircleCI guide runs @inprod.io/run-changesets from .circleci/config.yml. The best content angle is to show how CircleCI should orchestrate the workflow while InProd handles the Genesys Cloud deployment logic.
Genesys Cloud CI/CD Pipeline with CircleCI
CircleCI is well suited to teams that want hosted CI/CD, reusable commands, branch filters, approval jobs, contexts for shared secrets, and scheduled validation. CircleCI's deployment documentation focuses on using pipelines and workflows to manage deployments; for Genesys Cloud, the deployment target is not an application server. It is the configuration layer that controls contact center behavior.
In a production-grade CircleCI workflow:
- Changesets are stored in a Git repository.
- Pull requests run validate-only checks against the target environment.
- Merges to
maindeploy to Development. - A CircleCI approval job gates UAT.
- A second approval job gates Production.
- InProd validates before execution at each stage.
- CircleCI stores
inprod-result.jsonandinprod-results.envas artifacts. - Scheduled workflows run validation to detect drift before the next release.
The pipeline should not be a one-step deploy button. It should be a release path that proves what will change before the change reaches live customer routing.
Why CircleCI Needs a Genesys-Aware Deployment Layer
CircleCI can run commands, store artifacts, share workspaces, use contexts, and pause workflows for approval. It cannot tell whether a Genesys Cloud queue dependency exists, whether a routing change is safe, or whether an emergency Admin UI update has created drift.
That is where InProd changesets fit.
| CircleCI capability | InProd capability |
|---|---|
| Workflows, jobs, filters, and approval gates | Genesys Cloud changeset validation and execution |
| Contexts and project environment variables | API authentication and environment targeting |
store_artifacts and workspaces |
Deployment result files and execution evidence |
| Scheduled workflows | Recurring validation and drift checks |
| YAML reuse through commands | Repeatable configuration deployment patterns |
The result is a CircleCI workflow that still feels natural to engineering teams, but does not treat Genesys Cloud configuration like a generic shell script.
CircleCI Prerequisites
Add these as CircleCI project environment variables or as an organization Context:
| Variable | Purpose |
|---|---|
INPROD_API_KEY |
Authenticates to InProd |
INPROD_BASE_URL |
Base URL for your InProd instance |
Use a Context when several repositories need the same InProd credentials. Keep Production credentials separate from Development credentials where possible, and use CircleCI restrictions to control which projects and jobs can access them.
Your repository also needs one or more InProd changeset files. YAML and JSON are supported by the runner, and glob patterns such as changesets/*.yaml are useful when a release is made of multiple ordered changes.
Recommended Repository Structure
Use a structure that makes review and promotion obvious:
.circleci/
config.yml
changesets/
dev/
uat/
production/
shared/
01_queues.yaml
02_skills.yaml
rollback/
rollback-routing.yaml
Some teams prefer one shared changesets/ folder with environment selected by INPROD_ENVIRONMENT. Others keep environment-specific changesets separate. The SEO and operating recommendation is to promote the same artifact wherever possible, and use environment targeting or runtime variables for differences that truly must vary.
Minimal CircleCI Job
A simple CircleCI job can deploy a changeset to Production:
version: 2.1
jobs:
deploy-changesets:
docker:
- image: cimg/node:18.20
steps:
- checkout
- run:
name: Run InProd Changesets
command: npx --yes @inprod.io/run-changesets
environment:
INPROD_CHANGESET_FILE: changesets/queues.yaml
INPROD_ENVIRONMENT: Production
- store_artifacts:
path: inprod-result.json
destination: inprod-result
workflows:
deploy:
jobs:
- deploy-changesets:
filters:
branches:
only: main
This is useful for a quick start, but the enterprise value comes from adding validate-only checks, approval gates, artifacts, and scheduled validation.
Reusable CircleCI Command for InProd
The official InProd guide shows a reusable command pattern. That is the right direction because every Genesys Cloud deployment job should use the same defaults.
version: 2.1
commands:
run_inprod_changesets:
parameters:
changeset_file:
type: string
environment:
type: string
default: ""
validate_only:
type: boolean
default: false
execution_strategy:
type: string
default: validate_first
steps:
- run:
name: Run InProd Changesets
command: npx --yes @inprod.io/run-changesets
environment:
INPROD_CHANGESET_FILE: << parameters.changeset_file >>
INPROD_ENVIRONMENT: << parameters.environment >>
INPROD_VALIDATE_ONLY: << parameters.validate_only >>
INPROD_EXECUTION_STRATEGY: << parameters.execution_strategy >>
- store_artifacts:
path: inprod-result.json
destination: inprod-result
With this command, the rest of the config can focus on the release path instead of repeating command wiring.
Multi-Environment CircleCI Workflow
For Genesys Cloud DevOps automation, the strongest workflow is validate, deploy Development, approve UAT, deploy UAT, approve Production, deploy Production.
version: 2.1
jobs:
validate:
docker:
- image: cimg/node:18.20
steps:
- checkout
- run_inprod_changesets:
changeset_file: changesets/*.yaml
validate_only: true
deploy-dev:
docker:
- image: cimg/node:18.20
steps:
- checkout
- run_inprod_changesets:
changeset_file: changesets/*.yaml
environment: Development
deploy-uat:
docker:
- image: cimg/node:18.20
steps:
- checkout
- run_inprod_changesets:
changeset_file: changesets/*.yaml
environment: UAT
deploy-prod:
docker:
- image: cimg/node:18.20
steps:
- checkout
- run_inprod_changesets:
changeset_file: changesets/*.yaml
environment: Production
workflows:
deploy-genesys-cloud:
jobs:
- validate
- deploy-dev:
requires: [validate]
filters:
branches:
only: main
- hold-uat:
type: approval
requires: [deploy-dev]
- deploy-uat:
requires: [hold-uat]
- hold-prod:
type: approval
requires: [deploy-uat]
- deploy-prod:
requires: [hold-prod]
This pattern makes CircleCI the visible release control plane while preserving InProd as the system that understands changesets, validation, and Genesys Cloud environments.
Pull Request Validation
Pull requests should validate without executing:
version: 2.1
jobs:
validate-changesets:
docker:
- image: cimg/node:18.20
steps:
- checkout
- run:
name: Validate InProd Changesets
command: npx --yes @inprod.io/run-changesets
environment:
INPROD_CHANGESET_FILE: changesets/*.yaml
INPROD_VALIDATE_ONLY: "true"
- store_artifacts:
path: inprod-result.json
destination: inprod-result
workflows:
validate-pr:
jobs:
- validate-changesets:
filters:
branches:
ignore: main
This job answers the first production-readiness question: does the proposed configuration change validate before it can be merged?
Artifacts, Workspaces, and Status
The InProd runner creates two files:
| File | Purpose |
|---|---|
inprod-results.env |
Aggregate status such as SUCCESS, FAILURE, TIMEOUT, REVOKED, or SUBMITTED |
inprod-result.json |
Per-file execution detail for review, notification, and audit |
Use store_artifacts so release evidence is available in CircleCI. Use persist_to_workspace and attach_workspace when a downstream notification job needs to read INPROD_STATUS:
- persist_to_workspace:
root: .
paths:
- inprod-results.env
- inprod-result.json
Status handling matters for contact center releases. A failed queue or routing deployment should not disappear into a generic job log. It should notify the release owner, link to the change ticket, and preserve the InProd result artifact.
Scheduled Validation for Drift
CircleCI scheduled pipelines are valuable for Genesys Cloud because drift often happens outside normal releases. Emergency Admin UI fixes, ad hoc troubleshooting, and small operational changes can make Production differ from source control or UAT.
Use a scheduled validation job to check changesets against Production without executing them:
workflows:
nightly-validation:
triggers:
- schedule:
cron: "0 12 * * *"
filters:
branches:
only: main
jobs:
- validate-changesets
Pair this with Genesys Cloud configuration auditing and drift-aware CI/CD governance. The goal is to find environment mismatch before a release depends on a false assumption.
Production Readiness Checklist
- Store InProd credentials in CircleCI project variables or Contexts.
- Use validate-only mode for pull request workflows.
- Use approval jobs before UAT and Production.
- Promote the same changeset files across environments.
- Set
INPROD_EXECUTION_STRATEGYtovalidate_firstfor multi-file releases. - Store
inprod-result.jsonas an artifact. - Persist
inprod-results.envwhen downstream jobs need status. - Run scheduled validation to expose drift.
- Keep rollback changesets in the repository.
- Link CircleCI workflow history to InProd audit records and change tickets.
FAQ
Can CircleCI deploy Genesys Cloud changes?
Yes. CircleCI can run @inprod.io/run-changesets to validate and execute InProd changesets against Genesys Cloud environments.
What is the target keyword for this article?
The primary keyword is Genesys Cloud CI/CD pipeline with CircleCI. Secondary phrases include CircleCI Genesys Cloud, InProd changesets CircleCI, Genesys Cloud DevOps automation, and Genesys Cloud configuration as code.
Should CircleCI validate pull requests?
Yes. Use INPROD_VALIDATE_ONLY=true so pull requests validate changesets without modifying Genesys Cloud configuration.
Can CircleCI require approval before Production?
Yes. Use CircleCI approval jobs in the workflow before UAT and Production deployment jobs.
How does this relate to CX as Code?
InProd and CircleCI can work alongside Genesys Cloud CX as Code. The article's focus is governed changeset deployment: validation, promotion, audit, drift detection, and rollback.
Related Resources
Use the InProd CircleCI integration guide, the CircleCI deployment documentation, and InProd's guides to Genesys Cloud CI/CD with CX as Code and Terraform and Genesys Cloud DevOps automation. To review how CircleCI should fit your contact center release process, book a call.

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.

