https://github.com/welpo/release
Automated release script using git-cliff.
https://github.com/welpo/release
git-cliff release-automation
Last synced: 2 months ago
JSON representation
Automated release script using git-cliff.
- Host: GitHub
- URL: https://github.com/welpo/release
- Owner: welpo
- License: mit
- Created: 2024-09-24T22:11:50.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-11-22T00:57:10.000Z (6 months ago)
- Last Synced: 2025-01-25T18:26:18.606Z (4 months ago)
- Topics: git-cliff, release-automation
- Language: Shell
- Homepage:
- Size: 12.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# release
Bash [script](/release) for automating releases. Uses [git-cliff](https://github.com/orhun/git-cliff) to get a version suggestion, updates the changelog, and creates a new version tag.
## ✨ Features
- Ensures releases are made from the default branch
- Verifies the working directory is clean
- Checks if the local repository is up-to-date
- Suggests a version number using git-cliff
- Updates the CHANGELOG.md file
- Creates a signed and annotated git tag
- Supports custom pre-release and post-release hooks> [!IMPORTANT]
> This script performs a signed tag operation (`git tag -s`). Ensure you have a [GPG key set up](https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key) for signing.## 📝 Usage
1. [Set up git-cliff](https://git-cliff.org/docs/).
2. Place the `release` script in your project's root directory.
3. Run the script:```bash
bash release [version_tag]
```If you don't provide a version tag, the script will suggest one based on git-cliff's output.
This script works best when you ensure your commit messages follow the [Conventional Commits](https://www.conventionalcommits.org) format. Check out my tool [git-sumi](https://github.com/welpo/git-sumi) to enforce this format on your projects.
## 🪝 Hooks
The script supports custom hooks for project-specific release tasks. Create executable files in a `.release-hooks` directory in your project root:
- `pre-release`: First thing that runs after verifying script is ready to go
- `post-release`: Runs after creating the release tagHooks receive the version tag (e.g., "v1.2.3") as their first argument. Example of a bash pre-release hook:
```bash
# .release-hooks/pre-release
#!/usr/bin/env bashVERSION_TAG="$1"
poetry version "${VERSION_TAG#v}" # Update version in pyproject.toml
```Hooks can be in any language as long as they are executable (`chmod +x` required).
## 👥 Contributing
I'm making this repository public to simplify syncing changes to this script across my projects. If you decide to use the script and encounter any issues or have suggestions, feel free to submit issues or pull requests.
## 📄 License
The code is available under the [MIT license](./LICENSE).