Skip to content

Commit

Permalink
feat(semrel): Add the Semantic-Release workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
pifou25 committed Dec 2, 2023
1 parent 0312bc5 commit 553a18c
Show file tree
Hide file tree
Showing 5 changed files with 128 additions and 1 deletion.
14 changes: 14 additions & 0 deletions .github/workflows/checkCommit.yml
Original file line number Diff line number Diff line change
@@ -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
30 changes: 30 additions & 0 deletions .github/workflows/semantic-release.yml
Original file line number Diff line number Diff line change
@@ -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
58 changes: 57 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down Expand Up @@ -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
```
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ 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
```
26 changes: 26 additions & 0 deletions docs/fr_FR/changelog_beta.md
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions plugin_info/info.json
Original file line number Diff line number Diff line change
@@ -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"},
Expand Down

0 comments on commit 553a18c

Please sign in to comment.