Skip to content
This repository was archived by the owner on May 29, 2026. It is now read-only.

e-graveyard/vrelease-vrelease

Repository files navigation

Build Test Release Tag

vrelease

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: git is 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

Table of contents

How can I use it?

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.

Execution example

This commit closes the v1.1.0 tag of this project. When using the following command:

vrelease --add-checksum --add-description --attach my_artifact

The generated release looks like this

CI/CD examples

TODO

Help message


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.

How can I get it?

vrelease is distributed in many pre-built forms:

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 release

Can I contribute?

Yes, 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.

License

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

License