Guide Semantic Release pour PyMoX⚓︎
Ce guide explique comment utiliser la configuration semantic-release étendue pour automatiser le versioning de votre site MkDocs.
🎯 Objectif⚓︎
Permettre l'incrémentation automatique de version (patch) avec une variété de mots-clés au-delà du simple fix:
, adaptés aux besoins d'un site de documentation.
⚙️ Configuration⚓︎
La configuration se trouve dans pyproject.toml
:
[tool.semantic_release]
version_source = "tag"
branch = "main"
upload_to_pypi = false
commit_parser = "angular"
[tool.semantic_release.commit_parser_options]
# Types qui déclenchent une version MINEURE (0.x.0)
minor_tags = ["feat", "maj", "upgrade"]
# Types qui déclenchent une version PATCH (0.0.x)
patch_tags = [
"fix", "doc", "style", "refactor", "perf", "ui", "ux",
"content", "i18n", "typo", "up", "update", "revert", "hotfix",
"patch", "tweak", "adjust", "correct", "improve", "enhance",
"optimize", "clean", "format", "lint", "deps", "security",
"config", "meta", "misc"
]
# Types autorisés mais qui ne déclenchent pas de version
other_allowed_tags = []
# Liste complète de tous les types autorisés
allowed_tags = [
"feat", "maj", "upgrade",
"fix", "doc", "style", "refactor", "perf", "ui", "ux",
"content", "i18n", "typo", "up", "update", "revert", "hotfix",
"patch", "tweak", "adjust", "correct", "improve", "enhance",
"optimize", "clean", "format", "lint", "deps", "security",
"config", "meta", "misc"
]
Note importante : Nous utilisons le parser angular
car il supporte les types personnalisés via patch_tags
et minor_tags
. Le parser conventional
ne permet pas d'ajouter des types personnalisés.
🚀 Utilisation⚓︎
Types de commits qui déclenchent une version PATCH (0.0.X)⚓︎
Corrections et améliorations⚓︎
fix:
- Correction de bughotfix:
- Correction urgentepatch:
- Correction mineurecorrect:
- Correction généralerevert:
- Annulation d'un changement
Performance et optimisation⚓︎
perf:
- Amélioration de performanceoptimize:
- Optimisation du codeenhance:
- Amélioration générale
Interface et expérience⚓︎
ui:
- Modifications de l'interfaceux:
- Améliorations UXtweak:
- Petits ajustementsadjust:
- Ajustements mineurs
Contenu et documentation⚓︎
doc:
- Documentationcontent:
- Contenu du sitei18n:
- Traductionstypo:
- Fautes de frappe
Maintenance et outils⚓︎
deps:
- Dépendancessecurity:
- Sécuritéconfig:
- Configurationclean:
- Nettoyageformat:
- Formatagelint:
- Lintingmeta:
- Métadonnéesmisc:
- Divers
Mises à jour⚓︎
up:
- Petites mises à jourupdate:
- Mises à jour générales
Commits qui ne déclenchent PAS de version⚓︎
Tout commit sans format type:
ne déclenche aucune nouvelle version.
Exemples :
git commit -m "Ajout de nouvelles fonctionnalités"
git commit -m "Correction de bugs"
git commit -m "WIP: travail en cours"
git commit -m "Tests ajoutés"
git commit -m "Refactoring du code"
Principe : Si vous ne voulez pas déclencher de version, n'utilisez simplement pas le format type: description
.
🧪 Tests⚓︎
Script de test complet⚓︎
Vérification d'un message spécifique⚓︎
python check_commit.py "typo: correction des fautes dans le README"
python check_commit.py "optimize: amélioration des performances"
python check_commit.py "deps: mise à jour de Material for MkDocs"
📝 Exemples pratiques⚓︎
Corrections de contenu⚓︎
git commit -m "typo: correction des fautes dans la page d'accueil"
git commit -m "content: ajout de nouveaux exemples Python"
git commit -m "i18n: traduction de la section API"
git commit -m "doc: mise à jour de la documentation API"
Améliorations techniques⚓︎
git commit -m "optimize: amélioration des temps de chargement"
git commit -m "perf: optimisation des images"
git commit -m "clean: suppression du code mort"
Maintenance⚓︎
git commit -m "deps: mise à jour de Material for MkDocs vers v9.5.0"
git commit -m "config: amélioration de la configuration MkDocs"
git commit -m "security: correction de vulnérabilité"
Interface utilisateur⚓︎
git commit -m "ui: amélioration du contraste des boutons"
git commit -m "ux: simplification de la navigation"
git commit -m "tweak: ajustement de l'espacement"
🔄 Workflow GitHub Actions⚓︎
Le workflow .github/workflows/push.yml
utilise cette configuration :
- name: Run python-semantic-release
env:
GH_TOKEN: ${ { secrets.GITHUB_TOKEN }} # un espace à ôter ici { {
run: |
python -m semantic_release version
python -m semantic_release publish
📊 Impact sur le versioning⚓︎
- MAJOR (X.0.0) :
feat!:
,breaking:
, ou commits avecBREAKING CHANGE:
- MINOR (0.X.0) :
feat:
,upgrade:
,maj:
- PATCH (0.0.X) : Tous les autres types listés ci-dessus
💡 Conseils⚓︎
- Format strict : Respectez le format
type: description
- Descriptions claires : Utilisez des descriptions explicites
- Scope optionnel : Vous pouvez ajouter un scope :
docs(api): mise à jour
- Cohérence : Utilisez toujours le même type pour des changements similaires
🔍 Vérification avant commit⚓︎
Avant de faire un commit, vous pouvez vérifier son impact :
Cela vous indiquera si le commit déclenchera une nouvelle version et de quel type.