This document describes the release process for this project.
- Ensure all tests pass:
just test - Ensure code is linted:
just lint - All changes are committed to the main branch
- Update the version in the
versionfile - Run the release script:
Or directly:
just release
./ci/release.sh
The script will:
- Validate that only the version file has changed
- Check that the version file exists and is not empty
- Verify the tag doesn't already exist
- Commit the version change
- Create a git tag (v{version})
- Push the commit and tag to GitHub
To preview what the release script would do without making changes:
DRY_RUN=1 ./ci/release.shIf you need to create a release manually:
- Update the version in the
versionfile - Commit the change:
git add version git commit -m "Release X.Y.Z" - Create and push the tag:
git tag -a "vX.Y.Z" -m "Release vX.Y.Z" git push origin main git push origin "vX.Y.Z"
Once a tag is pushed, GitHub Actions will automatically:
- Build DEB, RPM, and Arch Linux packages using nfpm
- Create a GitHub release
- Upload all package artifacts to the release
The workflow is defined in .github/workflows/release.yml.
This project follows Semantic Versioning:
- MAJOR.MINOR.PATCH (e.g., 1.2.3)
- Increment MAJOR for breaking changes
- Increment MINOR for new features
- Increment PATCH for bug fixes
If you get an error that the tag already exists:
git tag -d vX.Y.Z # Delete local tag
git push origin :vX.Y.Z # Delete remote tagThen update the version and try again.
Check the GitHub Actions workflow run at: https://github.com/ngirard/wedit/actions