@@ -122,8 +122,8 @@ Your `.gitlab-ci.yml` file will have to declare **all stages required by include
Many templates offer the possibility to package the code and **publish** it to an appropriate registry (ex: PyPI for Python, Maven repository for Java, npm for Node.js, Container registry for container images...).
In addition, _to be continuous_ also support triggering a **release**.
A release is the action - from the current development branch - to freeze a stable version of the code, determine
the next version, publish the versioned code packages possibly with additional release specific artifacts (changelog).
A release is the action - from the main branch - to freeze a stable version of the code, determine
the next version, publish the versioned code packages (possibly with additional release specific artifacts - ex: a changelog).
As stated above, a **release** should trigger one or several **publish** actions.
But a **publish** is not necessarily related to a **release**. Depending on the related technology, you may also want to publish _unstable_ package versions (ex: _snapshot_ in Maven terminology).
@@ -139,7 +139,7 @@ Functionally, a **release** involves the following steps:
3. commit the changes
3.`[mandatory]` create a **Git tag** named after the version,
4.`[optional]` create a [GitLab release](https://docs.gitlab.com/ee/user/project/releases/),
5.`[mandatory]`**package** the code (language-dependent format) & **publish** the versioned package to an appropriate repository.
5.`[mandatory]`**package** the code (language-dependent format) & **publish** the versioned package(s) to an appropriate repository.
Some _to be continuous_ templates provide their own release job when supported by the build tool (ex: Maven with the [Maven Release Plugin](https://maven.apache.org/maven-release/maven-release-plugin/), Python with [Bumpversion](https://pypi.org/project/bumpversion/) or with the [Poetry Version](https://python-poetry.org/docs/cli/#version) command), but the release action can also be implemented by a separate tool/template such as [semantic-release](https://semantic-release.gitbook.io/semantic-release/) that can gracefully automates the release process (automatically determines the next version number based on Git commit messages, enforces [semantic versioning](https://semver.org/), generates the release notes, creates the tag and the GitLab release).