OpsDec uses semantic versioning (MAJOR.MINOR.PATCH) for releases.
Update the version in package.json:
{
"version": "1.0.0"
}# Create an annotated tag
git tag -a v1.0.0 -m "Release v1.0.0 - Brief description"
# Push the tag to GitHub
git push origin v1.0.0GitHub Actions will automatically:
- Build multi-platform Docker images (amd64, arm64)
- Create the following image tags:
ghcr.io/mondominator/opsdec:1.0.0(full version)ghcr.io/mondominator/opsdec:1.0(major.minor)ghcr.io/mondominator/opsdec:1(major only)ghcr.io/mondominator/opsdec:latest(if on main branch)
Use the GitHub UI or CLI to create a release:
# Using GitHub CLI
gh release create v1.0.0 \
--title "OpsDec v1.0.0" \
--notes "Release notes here" \
--latest- MAJOR (1.0.0): Breaking changes, major new features
- MINOR (0.1.0): New features, backwards compatible
- PATCH (0.0.1): Bug fixes, small improvements
For each push to main:
latest- Always points to the latest main branch buildYYYYMMDD- Date-based tag (e.g.,20251118)main-abc1234- Commit SHA tag
For version releases (v1.2.3):
1.2.3- Full semantic version1.2- Major.Minor only1- Major version only
-
Build and test locally:
docker build -t opsdec:test . docker run -d --name opsdec-test opsdec:test -
Run through test scenarios
-
Check logs for errors
-
Verify all features work as expected
If a release has issues:
# Delete the tag locally and remotely
git tag -d v1.0.0
git push origin :refs/tags/v1.0.0
# Delete the GitHub release
gh release delete v1.0.0Note: Docker images cannot be deleted from GHCR once pushed. Users should pin to specific working versions.