Changelogs automatiques avec GitLab
GitLab peut generer des changelogs a partir des commits :
# .gitlab/changelog_config.yml
---
date_format: "%Y-%m-%d"
categories:
- title: "Nouvelles fonctionnalites"
labels:
- "feature"
- title: "Corrections de bugs"
labels:
- "bug"
- title: "Performance"
labels:
- "performance"
Convention de commits
# Conventional Commits
feat: ajouter le dashboard utilisateur
fix: corriger le calcul des totaux
perf: optimiser la requete de recherche
docs: mettre a jour le guide d'installation
chore: mettre a jour les dependances
BREAKING CHANGE: renommer le parametre api_key en token
Pipeline complet de release
stages:
- test
- build
- release
- deploy
variables:
IMAGE: $CI_REGISTRY_IMAGE
test:
stage: test
script: npm test
rules:
- if: $CI_COMMIT_TAG
build-image:
stage: build
image: docker:24
services:
- docker:24-dind
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $IMAGE:$CI_COMMIT_TAG -t $IMAGE:latest .
- docker push $IMAGE:$CI_COMMIT_TAG
- docker push $IMAGE:latest
rules:
- if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/
create-release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
script:
- echo "Release $CI_COMMIT_TAG"
release:
tag_name: $CI_COMMIT_TAG
name: "Release $CI_COMMIT_TAG"
description: "Release automatique pour $CI_COMMIT_TAG"
assets:
links:
- name: "Docker Image"
url: "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG"
link_type: "image"
rules:
- if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/
deploy-production:
stage: deploy
script: ./deploy.sh $CI_COMMIT_TAG
environment:
name: production
url: https://www.example.com
rules:
- if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/
when: manual
Astuce : Combinez les Conventional Commits avec la generation automatique de changelog pour avoir un historique propre et lisible.