changeops
v1.0.0-prelresase.0
Published
DSC-driven release pipeline tool for operationalizing Changesets across repos and stacks
Maintainers
Readme
ChangeOps
⚠️ Read SETUP_REQUIREMENTS.md before contributing.
ChangeOps is a DSC-driven release pipeline tool for managing Changesets-based release workflows across platforms and build systems.
What it does
- Multi-platform adapter model (
github,ado,bitbucket,gitlab) - Multi-build-system adapter model (
node,dotnet,aspire,react) - Desired-state config with validation (
validate) and remote diagnostics (doctor) - Release model: promote, never rebuild
Install (normal usage)
# GitHub Packages auth is required (package is currently private during testing)
npm install --save-dev @kjldev/changeopsRun from your repository:
npx changeops validate
npx changeops doctorConfiguration
ChangeOps loads config from the first file it finds, in this order:
.changeops/config.json(preferred).changeops.config.json
Example:
{
"version": "1.0",
"platform": "github",
"buildSystem": "node",
"release": {
"baseBranch": "main",
"releaseBranchPattern": "releases/v*",
"changesets": {
"enabled": true,
"enforcedOnPR": true,
"bypassLabel": "no-changeset"
}
},
"github": {
"owner": "my-org",
"repo": "my-repo"
}
}Environment variables in ${VAR_NAME} format are interpolated when config is loaded.
Commands
# Local validation (no API calls required)
npx changeops validate
# Pre-push style local branch check
npx changeops validate push
# Remote diagnostics (requires token for platform checks)
npx changeops doctor
# Pipeline setup preview/apply (in progress)
npx changeops setup --dry-run
npx changeops setupinit, sync, and release command paths exist but are not fully implemented yet.
Local development (this repository)
Use direct node bin/changeops.mjs ... commands only when developing ChangeOps itself:
npm ci
npm run lint
npm run build
npm test
node bin/changeops.mjs validate
node bin/changeops.mjs doctorDevelopment notes
- Node.js 24+ required (
package.jsonengines) - Package manager: npm
- Test runner: Vitest (
npm test,npm run test:ci)
