Github-2 Création de pipelines 👩🏽‍💻

Objectifs:
🎯 Créer des pipelines déclenchés par différents évènements github.

Prérequis:
💡 [ Avoir un compte github ].
💡 [ Visual Studio Code installé ].
💡 [ Git installé ].


logo de github, outil devops de versionning et d'automatisation du cycle de vie de code source.

Bonjour, cette rubrique fait suite à la présentation de l'outil [ Github-Actions-1 Présentation de l'outil ] que je vous conseille de visiter si vous n'avez pas de connaissances sur github actions.

1) Création d'un pipeline qui check la syntax de notre script shell sur les push de code.
1.1) Créer une nouvelle branche et créer le fichier .github/workflows/push-lint.yml.

Création d'une nouvelle branche github pour notre pipeline de push basé sur les évènements github de push. 1.2) Visiter le [ Github Actions Marketplace ] pour savoir quelle action utiliser et comment l'implémenter dans vos pipelines puis rechercher 'shell'.

Interface web du marketplace github actions de l'outils devops github. 1.3) Éditer le workflow push-lint.yml .

Edition du manifest yml d'un workflow github sur l'évènement push de l'outil devops github.

* Le workflow commence par la définition de son nom, notre pipeline s'appelle 'push-lint'.
* Ensuite on définit l'élément déclencheur du pipeline, ici on cible les push de code.
* Puis arrive le mot clés jobs qui va regrouper nos jobs et leur étapes.
* Définition du job 'lint-check'.
* Notre job 'lint-check' possède 2 étapes qui sont:
    - le checkout du code sur le runner qui exécute le job.
    - l'utilisateur de la version v0.6.0 du linter shell par azohra.


1.4) Pousser les modifications dans le repo github.

Interface web de l'outils devops github, possibilité de créer une pull request pour merger notre nouvelle branche. 1.5) Vérifier la liste de nos pipelines présents dans la rubrique actions de notre repo.

Interface web de l'outils devops github, visualisation de la liste de pipelines du repo. 1.6) Vérifier le status et les logs du pipeline.

Interface web de l'outils devops github, visualisation des logs de notre pipeline shell-lint. 1.7) Merger la branche dans la branche de référence (main).

Interface web de l'outils devops github, merge de ce nouveau pipeline dans la branche de référence.

2) Création d'un pipeline à déclencher manuellement qui crée un tag avec une sémentique de pré-release
2.1) Créer une nouvelle branche et créer le fichier prerelease_pipeline.yml dans le dossier .github/workflows/.

Création d'un pipeline github actions pour la gestion des tag de notre repo github.

(1) nom du pipeline.
(2) déclenchement manuel avec un input component-version à renseigner.
(3) création d'une variable d'environnement à partir de l'input renseigné au déclenchement.
(4) output du step spécifié mis à l'échelle du job.
(5) checkout du repo à l'aide d'une action du marketplace de [ Github Actions ]


Création d'un pipeline github actions pour la gestion des tag de notre repo github.

(6) pour utiliser hors du step un de ses output, le step doit obligatoirement avoir un id.
(7) envoie de la var tag-version dans les oputput du step 'set-tagversion'.
(8) Utilisation de jq pour retrouver la version de l'app à partir du json contenant les metadonnées du projet.
(9) mise en place de la notification 'project-version' dans le résumé du job.


2.2) Pousser le code, lancer le pipeline puis analyser les logs.

Exécution du pipeline de l'outils devops github actions de pré-release. Visualisation des logs du pipeline de pré-release avec l'outil devops github actions.

* Dans le résumé de l'éxécution du pipeline nous retrouvons les outputs manipulés dans le yml précédent.
* Essayez de faire le lien entre le Raw refname affiché avec le Raw refname déclaré en var d'env dans le yml.


Visualisation du nouveau tag dans le repo de l'outil devops github.

* Je n'ai montré qu'un extrait de mon pipeline
* Dans la suite de mon pipeline:
    - j'incrémente la version déclarée dans le project.json.
    - je commit et push ce changement sur project.json.
    - je taggue la branche avec le nouveau numéro de version.
* Je vous invite à essayer de finir un pipeline type.


Conclusion:
Nous venons de voir deux brefs exemples qui permettent d'avoir les bases sur les pipelines, il faudra cependant pratiquer pour bien s'imprégner de la syntaxe et se faire son mémento d'actions. Il me semble important d'avoir sous la main les [ vars d'environnement github ], encore une fois le [ Github Actions Marketplace ] et bien comprendre le partage de fichier et d'outputs entre les jobs.

Actuellement nos pipelines s'éxécutent en mode SAAS sur des machines github (ubuntu, macos, windows). Dans le cas où vous voudriez les exécuter sur vos propres machines, rendez-vous au chapitre suivants [ Github-Actions-3: Self-hosted runners ]