From 553a18c33e9f3990ae67b20d76b8796c2175047e Mon Sep 17 00:00:00 2001 From: Pifou25 Date: Fri, 13 Oct 2023 14:57:18 +0200 Subject: [PATCH] feat(semrel): Add the Semantic-Release workflow --- .github/workflows/checkCommit.yml | 14 +++++++ .github/workflows/semantic-release.yml | 30 +++++++++++++ README.md | 58 +++++++++++++++++++++++++- docs/fr_FR/changelog_beta.md | 26 ++++++++++++ plugin_info/info.json | 1 + 5 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/checkCommit.yml create mode 100644 .github/workflows/semantic-release.yml create mode 100644 docs/fr_FR/changelog_beta.md diff --git a/.github/workflows/checkCommit.yml b/.github/workflows/checkCommit.yml new file mode 100644 index 0000000..33b23c7 --- /dev/null +++ b/.github/workflows/checkCommit.yml @@ -0,0 +1,14 @@ +# This workflow check pull-requests commit message validity +name: "Check Commit message for Semantic validity" + +on: + # this workflow triggers only on Pull Requests + pull_request: + branches: [ master, beta, dev ] + types: [ opened, reopened, synchronize, edited ] + +jobs: + # one single job, import from jeedom/workflows + checkCommit: + # https://github.com/jeedom/workflows/blob/main/.github/workflows/checkCommit.yml + uses: jeedom/workflows/.github/workflows/checkCommit.yml@main diff --git a/.github/workflows/semantic-release.yml b/.github/workflows/semantic-release.yml new file mode 100644 index 0000000..cddbc47 --- /dev/null +++ b/.github/workflows/semantic-release.yml @@ -0,0 +1,30 @@ +# this workflow runs Semantic-Release on current branch +# - list new commits with conventional-commit messages +# - update changelog.md (or changelog_beta.md) +# - update version number into plugin_info/info.json +# - generate a new tag with the new version +# - publish a new Github package +# - generate vars.env file with the version number for future workflow steps +name: Semantic Release + +on: + push: + branches: [ master, beta, dev ] + pull_request: + branches: [ master, beta, dev ] + # this is to manually trigger the worklow + workflow_dispatch: + inputs: + logLevel: + description: 'Reason' + default: 'Manual launch' + +env: + # branch name must be 'beta' for beta branch + BRANCH_NAME: ${{ github.ref_name }} + +jobs: + # one single job, import from jeedom/workflows + release: + # https://github.com/jeedom/workflows/blob/main/.github/workflows/semantic-release.yml + uses: jeedom/workflows/.github/workflows/semantic-release.yml@main diff --git a/README.md b/README.md index 990e24e..5bb47af 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # Template de plugin pour Jeedom +[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release) +[![Build Master](https://github.com/pifou25/plugin-template/actions/workflows/semantic-release.yml/badge.svg?branch=master)](https://github.com/pifou25/plugin-template/actions/workflows/semantic-release.yml) +![GitHub release (with filter)](https://img.shields.io/github/v/release/pifou25/plugin-template) + Validation PHP Version (branche BETA) : ![PHP 7.3](https://github.com/jeedom/plugin-template/actions/workflows/lint_Php73.yml/badge.svg?branch=beta) @@ -32,5 +36,57 @@ La documentation générale relative à la conception de plugin est consultable * [Documentation du plugin](https://doc.jeedom.com/fr_FR/dev/documentation_plugin) : Présentation de la mise en place d'une documentation car un bon plugin n'est rien sans documentation adéquate. * [Publication du plugin](https://doc.jeedom.com/fr_FR/dev/publication_plugin) : Description des pré-requis indispensables à la publication du plugin. ---- + +### Automatic Linter + Si vous créez une branch nommée prettier, le robot workflows fera une passe complete sur le code pour que le code soit le plus uniforme possible. + +## Semantic Release + +### Description + +Ce projet suit la convention [Semantic Release](https://semantic-release.gitbook.io/semantic-release/) pour les messages de commit. +Ceci afin de générer automatiquement le changelog et les versions. Le ChangeLog + doit être dans docs/fr_FR/changelog.md (et docs/fr_FR/changelog_beta.md pour + la branche beta) ; et le numéro de version du plugin sera mis à jour + dans le fichier plugin_info/info.json + +### Format de message de commit + +Le format général est le suivant ([suivant la norme Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#-commit-message-format)). +Seul le header est obligatoire, les lignes blanches sont également obligatoires pour séparer body et footer s'il y en a. +``` +header + +(body) + +(footer) +``` + +### Header +``` +(): + │ │ │ + │ │ └─⫸ un résumé, sans majuscule, sans point + │ │ + │ └─⫸ Commit Scope: facultatif + │ + └─⫸ Commit Type: feat|fix|build|ci|docs|perf|refactor|test +``` + +Le scope est facultatif. Exemple minimal : +``` +fix: corrige le bug du pixel +``` + +Parmi les types, certains ont une influence sur le calcul du numéro de version: +* fix: un fix incrémente un numéro de patch +* feat: une nouvelle fonction incrémente le numéro `mineur` +* les autres types n'ont pas d'incidence sur le numéro de version + +### Footer + +C'est le footer qui indique s'il y a un `BREAKING CHANGE` donnant lieu à une nouvelle version (numéro majeur incrémenté). La syntaxe du footer dans ce cas est la suivante (le mot-clé `BREAKING CHANGE` est obligatoire): +``` +BREAKING CHANGE: description du changement majeur +``` diff --git a/docs/fr_FR/changelog_beta.md b/docs/fr_FR/changelog_beta.md new file mode 100644 index 0000000..067fa16 --- /dev/null +++ b/docs/fr_FR/changelog_beta.md @@ -0,0 +1,26 @@ +# Changelog plugin template - beta + +# 19/01/2022 + +- Optimisations V4.2 + +# 20/11/2020 + +- Présentation officielle V4 +- Ajouts d'éléments d'informations et de paramètres pour les commandes + +# 16/11/2020 + +- version minimale Jeedom: 3.3.39 (dernière MAJ critique) + +# 04/11/2020 + +- Nouvelle présentation de la liste des objets + +# 07/08/2020 + +- Ajout de commentaires + +# 17/05/2020 + +- Mise à jour de la documentation diff --git a/plugin_info/info.json b/plugin_info/info.json index 339b0c2..f241496 100644 --- a/plugin_info/info.json +++ b/plugin_info/info.json @@ -1,6 +1,7 @@ { "id" : "template", "name" : "Template", + "pluginVersion": "0.1", "specialAttributes" : { "object" : { "toto" : {"name" : {"fr_FR" : "Plop je suis un attribut spécial"},"type" : "input"},