Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/purpose-green/release
A script to make faster releases 🚀
https://github.com/purpose-green/release
bash
Last synced: 7 days ago
JSON representation
A script to make faster releases 🚀
- Host: GitHub
- URL: https://github.com/purpose-green/release
- Owner: Purpose-Green
- License: mit
- Created: 2024-09-17T13:49:09.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-11-06T18:49:27.000Z (9 days ago)
- Last Synced: 2024-11-08T07:05:33.318Z (7 days ago)
- Topics: bash
- Language: Shell
- Homepage:
- Size: 5.98 MB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Release
This script automates creating a release using your local Git. It:
- Selects the branch to release (e.g., `main`)
- Fetches the latest changes
- Compares commits with the target branch
- Prompts for confirmation
- Merges the branch
- Tags and creates a release
- Merges the branch back into the development branch
- Share the changelog via Slack> Run this script locally; deployment happens on the server after the release is created.
## How to use it?
```txt
./release --help
Usage: release [arguments] [options]Arguments:
source-branch The branch name to release.Options:
--debug Enable debug mode (set -x)
-d, --dry-run Simulate the release process without making any changes
-f, --force Ignore that your current local branch has ahead commits
-h, --help Print Help (this message) and exit
-v, --version Print version information and exit
--source branch Specify the source branch
--target branch Specify the target branch (default: "prod")
--develop branch Specify the develop branch (default: source-branch)Examples:
release main
release main --dry-run
release fix/... --force
release fix/... --dry-run --force
```## Env variables
### RELEASE_SUCCESSFUL_TEXT
Display a text at the very end of the release.
Useful to have a link directly to the releases page to validate everything was good.> Example: RELEASE_SUCCESSFUL_TEXT=https://github.com/Purpose-Green/release/releases
### RELEASE_EXTRA_CONFIRMATION
Force asking for a new dialog when a filepath is found on such a key.
The value is the question forced to be asked. It must be [y/Y] to continue the release.> Example: RELEASE_EXTRA_CONFIRMATION='{"migrations": "Migrations found! Remember to create a DB backup!"}'
## Demo
### Using --dry-run
![](demo/using-dry-run.gif)
### Creating a new release
![](demo/creating-release.gif)
## Development
#### Env
Make sure you have .env ready to use.
```bash
cp .env.dist .env
```#### Source
- The entry point of the script is `./release`
- The source code is `src/`, split by different script files storing isolated functions.
- You can build the entire project and create a single executable script with `./build.sh`#### Tests
The tests are inside `tests/`, using [bashunit](https://github.com/TypedDevs/bashunit/).
Use `install-dependencies.sh` to install bashunit inside your `lib/` folder