Skip to main content
InProd Logo
Genesys Cloud CI/CD with GitHub Actions and InProd

Genesys Cloud CI/CD with GitHub Actions and InProd

Jarrod Neven··
Genesys CloudGitHub ActionsCI/CDDevOps

A Genesys Cloud CI/CD pipeline with GitHub Actions is a controlled workflow for validating, approving, and deploying contact center configuration changes from Git into Development, UAT, and Production. GitHub Actions provides the workflow runner, pull request checks, environments, secrets, approvals, schedules, and outputs. InProd Run Changesets provides the Genesys Cloud-specific deployment layer: changeset validation, environment targeting, batch execution, deployment status, audit records, drift visibility, and rollback.

The InProd Run Changesets GitHub Marketplace action is built for this exact use case. It manages Genesys Cloud configuration as code through InProd changesets and exposes validation, deployment, status, and result outputs directly inside GitHub Actions.

Genesys Cloud CI/CD Pipeline with GitHub Actions

GitHub Actions is often the first CI/CD tool considered for Genesys Cloud configuration as code because the workflow lives beside the changeset files. GitHub's Actions documentation positions workflows as automation triggered by repository events such as pull requests, pushes, schedules, and manual dispatch. For Genesys Cloud, those triggers become the control path for configuration changes that can affect live customer routing.

A production workflow should:

  1. Store InProd changeset files in the repository.
  2. Validate pull requests without executing the change.
  3. Deploy merged changes to Development.
  4. Promote the same reviewed artifact to UAT.
  5. Require GitHub Environment approval before Production.
  6. Use InProd validation before execution.
  7. Capture action outputs and result JSON.
  8. Use InProd audit history and rollback for recovery.

The strategic point is that GitHub should orchestrate the release, while InProd should own the Genesys Cloud configuration operation.

What the InProd Run Changesets Action Does

The Marketplace listing describes the action as a way to manage Genesys Cloud configuration as code through InProd changesets. It supports the controls a real pipeline needs:

Action capability Why it matters
validate_only Pull requests can validate without modifying Genesys Cloud
validate_before_execute Production deployments fail closed when validation errors appear
environment The same changeset can target Development, UAT, or Production
changeset_file Supports single files and glob patterns
execution_strategy validate_first can validate all matched files before executing any
fail_fast Stops a batch on first failure when dependency risk is high
changeset_variables Injects secrets and environment values from GitHub Secrets
polling_timeout_minutes Gives larger changesets enough time to complete
status output Lets later steps branch on SUCCESS, FAILURE, TIMEOUT, or cancellation
result output Provides detailed per-file deployment results

This gives GitHub Actions a contact-center-aware deployment primitive instead of a generic script.

GitHub Prerequisites

Before building the workflow, create repository or organization secrets:

Secret or variable Purpose
INPROD_API_KEY Authenticates to InProd
INPROD_BASE_URL Base URL for the InProd instance
Environment-specific secrets Optional values injected into changesets at runtime

Use GitHub Environments named Development, UAT, and Production. Add required reviewers to UAT and Production. Where possible, use environment secrets so Production credentials are only available to the Production environment.

The action requires an InProd API key with permissions to view and run changesets for the target environment.

Use a layout that makes review easy:

.github/
  workflows/
    validate-genesys-changesets.yml
    deploy-genesys-changesets.yml
changesets/
  01_queues.yaml
  02_skills.yaml
  03_routing.yaml
rollback/
  rollback-routing.yaml
docs/
  release-notes/

Keep ordinary deployment changesets and rollback changesets separate. Prefix files when the order matters.

Minimal GitHub Actions Workflow

A minimal Production deployment looks like this:

name: Deploy Genesys Cloud Changesets

on:
  push:
    branches: [main]
    paths:
      - "changesets/**"

env:
  INPROD_API_KEY: ${{ secrets.INPROD_API_KEY }}
  INPROD_BASE_URL: ${{ secrets.INPROD_BASE_URL }}

jobs:
  deploy:
    runs-on: ubuntu-latest
    environment: Production
    steps:
      - uses: actions/checkout@v4
      - name: Deploy changeset
        id: deploy
        uses: inprod/github-run-changesets@v1
        with:
          changeset_file: changesets/queues.yaml
          environment: Production

This proves the action works. For the article and for production, the stronger pattern includes pull request validation, multi-environment promotion, protected environments, and outputs.

Pull Request Validation

Pull request validation is one of the highest-value uses of GitHub Actions for Genesys Cloud:

name: Validate Genesys Cloud Changesets

on:
  pull_request:
    paths:
      - "changesets/**"

env:
  INPROD_API_KEY: ${{ secrets.INPROD_API_KEY }}
  INPROD_BASE_URL: ${{ secrets.INPROD_BASE_URL }}

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Validate changesets
        id: validate
        uses: inprod/github-run-changesets@v1
        with:
          changeset_file: changesets/*.yaml
          environment: Production
          validate_only: true
          execution_strategy: validate_first

This check gives reviewers evidence before merge. It also supports the broader Genesys Cloud CI/CD validation and promotion model: validate before deployment, not after.

Multi-Environment GitHub Actions Workflow

The production-ready workflow validates all environments, deploys Development, then requires approvals for UAT and Production:

name: Promote Genesys Cloud Changesets

on:
  push:
    branches: [main]
    paths:
      - "changesets/**"

env:
  INPROD_API_KEY: ${{ secrets.INPROD_API_KEY }}
  INPROD_BASE_URL: ${{ secrets.INPROD_BASE_URL }}

jobs:
  validate:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        environment: [Development, UAT, Production]
    steps:
      - uses: actions/checkout@v4
      - uses: inprod/github-run-changesets@v1
        with:
          changeset_file: changesets/*.yaml
          environment: ${{ matrix.environment }}
          validate_only: true
          execution_strategy: validate_first

  deploy-dev:
    needs: validate
    runs-on: ubuntu-latest
    environment: Development
    steps:
      - uses: actions/checkout@v4
      - uses: inprod/github-run-changesets@v1
        with:
          changeset_file: changesets/*.yaml
          environment: Development
          execution_strategy: validate_first

  deploy-uat:
    needs: deploy-dev
    runs-on: ubuntu-latest
    environment: UAT
    steps:
      - uses: actions/checkout@v4
      - uses: inprod/github-run-changesets@v1
        with:
          changeset_file: changesets/*.yaml
          environment: UAT
          execution_strategy: validate_first

  deploy-prod:
    needs: deploy-uat
    runs-on: ubuntu-latest
    environment: Production
    steps:
      - uses: actions/checkout@v4
      - uses: inprod/github-run-changesets@v1
        with:
          changeset_file: changesets/*.yaml
          environment: Production
          execution_strategy: validate_first

Configure required reviewers on the UAT and Production environments in GitHub settings. The workflow defines the path; the environment rules enforce approval.

Outputs and Notifications

The action exposes a status output and a result output. Use them to fail a workflow deliberately, post a summary, or notify an operations channel:

- name: Deploy to Production
  id: deploy
  uses: inprod/github-run-changesets@v1
  with:
    changeset_file: changesets/*.yaml
    environment: Production

- name: Check deployment status
  if: always()
  run: |
    echo "InProd status: ${{ steps.deploy.outputs.status }}"
    echo '${{ steps.deploy.outputs.result }}'

For regulated or high-change contact centers, connect that output to ticketing, release notes, or change-control evidence. GitHub workflow history, InProd execution logs, and configuration auditing should tell the same story.

Changeset Variables and Secrets

Use changeset_variables to inject runtime values:

- name: Deploy with runtime variables
  uses: inprod/github-run-changesets@v1
  with:
    changeset_file: changesets/deploy.yaml
    environment: Production
    changeset_variables: |
      DATABASE_PASSWORD=${{ secrets.DB_PASSWORD }}
      API_TOKEN=${{ secrets.API_TOKEN }}

Do not store secrets in changeset files. Keep the changeset reviewable and inject sensitive values from GitHub Secrets or environment secrets.

Scheduled Drift Validation

Schedule validate-only workflows to catch drift:

on:
  schedule:
    - cron: "0 12 * * *"

jobs:
  validate-production:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: inprod/github-run-changesets@v1
        with:
          changeset_file: changesets/**/*.yaml
          environment: Production
          validate_only: true

Scheduled validation is especially useful when emergency Admin UI changes happen outside Git. The release process should discover drift before the next Production deployment assumes the environment is unchanged.

Rollback Model

For high-risk Genesys Cloud changes, create rollback changesets before deployment. A rollback workflow can be manually triggered with workflow_dispatch and protected by the Production environment.

The rollback should use the same action and the same audit path. That keeps recovery fast without bypassing governance.

Production Readiness Checklist

  • Store InProd credentials as GitHub Secrets or environment secrets.
  • Use pull request validation with validate_only: true.
  • Configure GitHub Environments for Development, UAT, and Production.
  • Require reviewers before UAT and Production.
  • Promote the same changeset files across environments.
  • Use execution_strategy: validate_first for multi-file releases.
  • Capture status and result outputs for notification and evidence.
  • Schedule validate-only checks for drift.
  • Keep rollback changesets in source control.
  • Link the article to the Genesys Cloud CI/CD pillar and Genesys Cloud DevOps automation.

FAQ

Can GitHub Actions deploy Genesys Cloud configuration?

Yes. The InProd Run Changesets action can validate and execute InProd changesets against Genesys Cloud environments from GitHub Actions.

Should pull requests execute changesets?

No. Pull requests should use validate_only: true so changesets are validated without modifying Genesys Cloud.

Can GitHub require approval before Production?

Yes. Use GitHub Environments with required reviewers for UAT and Production jobs.

Does this replace CX as Code or Terraform?

No. It complements Genesys Cloud CX as Code, Terraform, and Genesys configuration as code by adding governed changeset deployment through GitHub Actions.

Read the InProd Run Changesets Marketplace action, the GitHub Actions documentation, and InProd's guides to Genesys Cloud CI/CD with CX as Code and Terraform, CI/CD validation and promotion, and Genesys Cloud DevOps automation. To design a GitHub Actions release path for your Genesys Cloud environments, 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.