Semantic Versioning (SemVer)
Le format est MAJOR.MINOR.PATCH :
- MAJOR (1.0.0 -> 2.0.0) — Changements incompatibles
- MINOR (1.0.0 -> 1.1.0) — Nouvelles fonctionnalites retrocompatibles
- PATCH (1.0.0 -> 1.0.1) — Corrections de bugs retrocompatibles
# Exemples de versions
v1.0.0 # Premiere release stable
v1.1.0-beta.1 # Pre-release beta
v2.0.0-rc.1 # Release candidate
v1.0.1+build.42 # Metadata de build
Tags Git
# Tag annote (recommande pour les releases)
git tag -a v1.2.0 -m "Release v1.2.0 - Ajout du module de paiement"
git push origin v1.2.0
# Tag leger
git tag v1.2.0
git push origin v1.2.0
# Lister les tags
git tag -l "v1.*"
# Supprimer un tag
git tag -d v1.2.0
git push origin --delete v1.2.0
Releases GitLab
# Creer une release automatiquement dans le pipeline
release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
script:
- echo "Creating release for $CI_COMMIT_TAG"
release:
tag_name: $CI_COMMIT_TAG
name: "Release $CI_COMMIT_TAG"
description: "./CHANGELOG.md"
assets:
links:
- name: "Docker Image"
url: "https://registry.example.com/app:$CI_COMMIT_TAG"
- name: "Documentation"
url: "https://docs.example.com/v$CI_COMMIT_TAG"
rules:
- if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/
Release via l'API
curl --request POST \
--header "PRIVATE-TOKEN: $TOKEN" \
--header "Content-Type: application/json" \
--data '{
"tag_name": "v1.3.0",
"name": "Release v1.3.0",
"description": "## Nouveautes\n- Ajout du dashboard\n- Correction du bug #42",
"milestones": ["1.3"],
"assets": {
"links": [{
"name": "Package",
"url": "https://registry.example.com/package-1.3.0.tar.gz",
"link_type": "package"
}]
}
}' \
"https://gitlab.example.com/api/v4/projects/123/releases"
Bonne pratique : Utilisez toujours des tags annotes pour les releases. Ils contiennent le message, la date et l'auteur.