vrelease is a lightweight and straightforward release tool for GitHub and
GitLab. It is packed as a single binary that requires no configuration file and
weighs under 1MB. This tool is also:
- Simple: All required parameters are detected automatically
- Minimal:
gitis the only external program necessary - Agnostic: Language independent alternative for
goreleaser - CI/CD ready: Designed to be integrated in CI/CD pipelines of any provider
vrelease is a tool that generates releases on GitHub and GitLab. It
should be used in the context of a CI/CD pipeline, at the delivery stage. The
pipeline should be declared in a way that, when a new tag is pushed, the tool
is executed after the tests passed, so a new release is automatically created
with changelog.
The tool lists all the project's tags and compare the changes from the last tag to the current one -- If no last tag is detected, it will use the master branch as the last reference. It then formats the log to an HTML changelog and creates on the provider via an API call. The username, repository name, connection protocol (HTTPS or SSH) and provider (GitHub or GitLab) detection is based upon the repository remote URL.
Optionally, one or more artifacts can be attached to the release. The title and
a message/description can also be added using the last commit that closes the
tag. The API authentication to either GitHub or GitLab is made by tokens. The
token should be generated for you account and exposed inside the pipeline via
the VRELEASE_AUTH_TOKEN environment variable.
This commit closes the v1.1.0 tag of this project.
When using the following command:
vrelease --add-checksum --add-description --attach my_artifactThe generated release looks like this
TODO
KISS solution to easily create project releases.
Usage:
vrelease [--verbose] [-cdpn] [-l <size>] [-a <file>]...
vrelease -h | --help | --version
Options:
-l <size>, --limit <size> Set a limit on changelog lines.
-a <file>, --attach <file> Attach a release asset.
-c, --add-checksum Add a file integrity section.
-d, --add-description Add a release description section.
-p, --pre-release Release as non-production ready.
-n, --no-color Disable terminal output coloring.
-h, --help Print this help message
--version Show version information.
--verbose Increase logging information.
vrelease is distributed in many pre-built forms:
- For NodeJS projects, use the js-wrapper;
- For Python projects, use the py-wrapper;
- For MacOS systems, use the homebrew-formula;
- For Docker-based systems, use the docker-image;
- For all other needs, download from the releases page;
You can also build from source:
vrelease is implemented in Nim, a language inspired by Python, Ada and
Modula that compiles to C, C++ and JavaScript. After downloading and installing
Nim, use make (see Makefile) with release:
make releaseYes, contributions are welcomed. You can contribute with bugfixes and minor features. For bigger, more complex features or architectural changes, please contact me beforehand.
If you wish to contribute:
- Fork it (https://github.com/vrelease/vrelease/fork)
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Large contributions must contain a notice stating that the owner (i.e., the contributor) waive it's copyrights to the Public Domain.
To the extent possible under law, Caian Ertl has waived all copyright
and related or neighboring rights to this work. In the spirit of freedom of
information, I encourage you to fork, modify, change, share, or do whatever
you like with this project! ^C ^V