All notable changes to the InProd Run Changesets GitHub Action will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- mask_value Preservation — When injecting changeset variables,
mask_valueis now preserved from existing entries instead of always being set totrue. If any existing entry hasmask_value: true, it remainstrue; otherwise it defaults tofalse - Variable Deduplication — Fixed issue where multiple scope-specific entries for the same variable could interfere with injected values. Now removes all other records when overriding a variable, keeping only one with
environment: nullto prevent environment-scoped values from being applied - Variable Injection Logic — Improved handling of changeset variables to prevent conflicts with environment-specific variable scopes
- Variable injection now properly deduplicates entries to prevent scope conflicts
The InProd Run Changesets GitHub Action is now available for production use! This action enables automated validation and deployment of Genesys Cloud configuration changes through InProd changesets directly in your CI/CD pipelines.
- Changeset Validation — Validate InProd changesets before execution using InProd's advanced rules engine
- Changeset Execution — Deploy validated changesets to target Genesys Cloud environments
- Multi-Environment Support — Target environments by name or ID, enabling environment promotion workflows
- Batch Processing — Process multiple changesets with glob pattern support and customizable execution strategies
- Flexible Execution Strategies — Choose between
per_file(fail-fast per file) orvalidate_first(validate all, then execute) approaches - Configurable Validation — Enable/disable pre-execution validation or validation-only mode for pull request checks
- Secure Authentication — API keys are automatically masked in logs
- Comprehensive Polling — Monitor task completion with customizable timeout (default 10 minutes)
- Detailed Reporting — Per-file execution status with structured JSON output
- GitHub Secrets Integration — Inject secrets from GitHub Secrets without storing in version control or changesets
- KEY=VALUE Format — Simple, intuitive input format without JSON complexity
- Comment Support — Skip lines and add comments with
#prefix - Multi-Line Variables — Pass multiple secrets in single input with newline separation
- Value Support — Handle values containing
=signs (e.g., connection strings, permissions) - Automatic Masking — Variable values automatically masked in GitHub Actions logs
api_key— InProd API key (optional, falls back toINPROD_API_KEYenv var)base_url— InProd instance URL (optional, falls back toINPROD_BASE_URLenv var)changeset_file— Path to changeset file(s) or glob pattern (required)environment— Target environment name or ID (optional, overrides changeset file setting)validate_before_execute— Validate before execution (default:true)validate_only— Only validate without executing (default:false)polling_timeout_minutes— Task completion timeout in minutes (default:10)execution_strategy— How to process multiple files:per_fileorvalidate_first(default:per_file)fail_fast— Stop on first failure (default:false)changeset_variables— Secrets/variables in KEY=VALUE format (optional)
status— Aggregate status across all files (SUCCESS, FAILURE, REVOKED, TIMEOUT, SUBMITTED)result— JSON array of per-file results with detailed execution information
- README.md — Comprehensive guide with prerequisites, quick start, input/output reference
- CONTRIBUTING.md — Contributor guidelines for development and testing
- Examples — Six detailed workflow examples covering common use cases:
- Basic single-file deployment
- Pull request validation
- Multi-environment pipeline with approvals
- Batch processing with ordered execution
- Scheduled validation jobs
- Environment-specific deployments
- Integration Examples — Slack, Microsoft Teams, and Jira integration patterns
- Troubleshooting — Common errors, debugging tips, and resolution steps
- Sequential file processing with alphabetical ordering (use filename prefixes:
01_,02_, etc.) - Glob pattern support for flexible changeset file matching
- Environment-specific deployments with conditional logic
- Approval gates integration (GitHub Environments)
- Multi-region deployment patterns via matrix strategy
- API key masking in all logs
- Changeset variable masking (values never exposed in logs)
- Support for GitHub Secrets and repository secrets
- Environment-scoped API key recommendations
- No secrets stored in version control
- Structured JSON output for programmatic processing
- Per-file status reporting with error details
- Debug logging support for troubleshooting
- Polling status updates
- Integration with GitHub Actions workflow context
- Automatic retry on transient network errors
- Task polling with configurable timeout
- Comprehensive error messages with actionable solutions
- Validation error reporting with detailed output
- Continue-on-error support for multi-file deployments
- ✅ 84 tests passing with comprehensive coverage
- ✅ Single and multi-file deployments
- ✅ All execution strategies (per_file, validate_first)
- ✅ Error handling and edge cases
- ✅ Changeset variables parsing (JSON format, special characters, comments)
- ✅ API integration with mock responses
- ✅ Polling and timeout scenarios
- Sequential Processing Only — Changesets must be processed sequentially; parallel execution not supported (by design, to prevent conflicts)
- No Conditional Changesets — Cannot skip changesets based on runtime conditions; use separate workflows for conditional deployments
- Single API Key — One API key per action invocation (use separate jobs for multi-key scenarios)
None — this is the initial release.
- Node.js 18+ — GitHub Actions runtime requirement
- @actions/core — GitHub Actions toolkit for input/output handling
- @actions/github — GitHub API client (available in action runtime)
- Modern fetch API — For HTTP requests (available in Node 18+)
For users migrating from manual InProd deployments to this action:
- Secrets Management — Move API keys to GitHub Secrets for automatic masking
- Changeset Variables — Use the new
changeset_variablesinput for deployment-time secret injection - Validation Strategy — Consider enabling
validate_onlyfor pull request checks before deployment - Execution Order — Prefix changeset filenames with numbers to control execution order
This is version 1.0.0. Future releases will maintain backward compatibility within the v1.x range.
Recommended Usage:
uses: inprod/github-run-changesets@v1 # Latest v1.x releaseFor production workflows, use the major version tag (@v1) to automatically receive bug fixes and minor feature updates.
- Issues & Bugs — GitHub Issues
- Questions — See README.md FAQs
- InProd Support — InProd Solutions
- Contributing — See CONTRIBUTING.md
GNU General Public License v3 (GPLv3) — See LICENSE for details.
Special Thanks
This initial release represents meticulous development and comprehensive testing to ensure reliability for production deployments. Every feature has been thoroughly tested and documented.
What's Next
Future releases will focus on:
- Performance optimizations for large batches
- Additional integration examples
- Enhanced debugging capabilities
- Community feedback implementation