Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects

Release by Changelog

Pipeline Ruff

Release a new version of a software based on CHANGELOG.md file.

Detect the latest version in the CHANGELOG.md file and create a new release in the repository.

Release by Changelog rely on Keep a Changelog format and Semantic Versioning, following those two norms is required.

Installation

pip install --upgrade pip
pip install release-by-changelog

Usage

In a Gitlab CI pipeline, you can use the following command to release a new version of your software based on the CHANGELOG.md file.

release-by-changelog

It's recommended to add a rules section to run this command only on the default branch.

Here is an example of a .gitlab-ci.yml file using release-by-changelog:

release:
    stage: deploy
    script:
        - pip install release-by-changelog 
        - release-by-changelog
    rules:
        -   if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'

release-by-changelog will read the CHANGELOG.md file and create a new tag based on the latest version found in the file. The release will be pushed to the repository.

release-by-changelog rely on the following predefined CI/CD variables to authenticate with the GitLab API:

  • CI_PROJECT_ID: Used to identify the project,
  • CI_COMMIT_SHA: Used to identify the reference,
  • CI_JOB_TOKEN: Used to authenticate with the GitLab API.
  • CI_SERVER_HOST: Used to identify the GitLab host.

Local usage

You can also use this command locally to release a new version of your software.

release-by-changelog --token <token> <project> <ref>
  • project: Path or id on host. [required]
  • ref: Can be a branch, tag, or commit SHA. [required]

The token is required to authenticate with the GitLab API. You can authenticate with the GitLab API in several ways:

Using environment variables

You can also use environment variables to avoid passing the token each time. A token passed as an argument will always take precedence over the environment variable.

export PRIVATE_TOKEN=<token>
release-by-changelog <project> <ref>