This document outlines the step-by-step process for releasing a new version of llm-cli.
- Ensure the
mainbranch is stable and all tests are passing (make test). - Ensure there are no known vulnerabilities (
make vulncheck).
- Determine the new version number (e.g.,
v0.1.0). We follow Semantic Versioning. - Update
CHANGELOG.mdandCHANGELOG.ja.md: Add a new section for the release, moving changes from[Unreleased]to the new version section. - Update Development Log: Create a new
docs/development_logs/dev_log-YYYY-MM-DD.mdfile detailing the release process and its context. - Review and Update All Relevant Documentation: Ensure all documentation reflects the changes in the new release. This includes, but is not limited to:
README.mdandREADME.ja.md: For user-facing features, configuration, and quick start guides.CONTRIBUTING.md: For any changes in development setup, testing, or contribution guidelines.SECURITY.md: For any updates to security policies or vulnerability reporting.- Any other relevant
docs/files. - Double-check for consistency: Verify that new features, changes, or deprecations are accurately reflected across all relevant documents, including examples and command references.
-
Commit the changes:
git add CHANGELOG.md CHANGELOG.ja.md docs/development_logs/ go.mod go.sum git commit -m "feat: Release vX.Y.Z"(Adjust the commit type e.g.,
fix:,docs:as appropriate) -
Tag the release: Create a new Git tag on the release commit.
git tag vX.Y.Z
-
Push the commit:
git push origin main
-
Push the tag:
git push origin vX.Y.Z
(If you need to fix a tag, use
git tag -d vX.Y.Z,git push --delete origin vX.Y.Z, then re-tag and re-push)
- Run the full build:
make all
- Verify the version directly from the build output: Instead of installing, check the version of the newly compiled binary. Because the commit is tagged, the version should be clean (e.g.,
vX.Y.Z). If it shows extra information (e.g.,vX.Y.Z-1-g123abc), it means the tag was not placed on the latest commit.The output should show the correct, clean version number (e.g.,# For macOS ./bin/darwin-universal/llm-cli -v # For Linux # ./bin/linux-amd64/llm-cli -v
llm-cli version vX.Y.Z). This confirms the version was correctly embedded during the build.
- Go to the New Release page on GitHub.
- Select the tag you just pushed (e.g.,
vX.Y.Z). - Copy the relevant section from
CHANGELOG.mdinto the release description. - Upload the release assets from the local
bin/directory:llm-cli-darwin-universal.tar.gzllm-cli-linux-amd64.tar.gzllm-cli-windows-amd64.zip
- Click "Publish release".