Introduction aux Github Actions
Mise à jour :
GitHub Actions, intégré directement dans GitHub, offre une plateforme puissante et flexible pour la mise en place de pipelines CI/CD.
Histoire et Évolution de GitHub Actions
GitHub Actions a été lancé en 2018, marquant une étape importante dans l’évolution de GitHub en tant que plateforme DevOps. Avant GitHub Actions, les développeurs s’appuyaient sur des outils tiers pour automatiser leurs workflows CI/CD. GitHub Actions est donc né de la nécessité de fournir une solution d’automatisation intégrée directement au sein de GitHub, permettant aux utilisateurs de gérer l’ensemble du cycle de vie du développement logiciel sans quitter la plateforme.
Concepts Clés
GitHub Actions repose sur plusieurs concepts clés qui sont essentiels pour comprendre comment fonctionne cette solution de CI/CD.
Workflow
Un workflow est un ensemble d’actions à exécuter en réponse à des événements spécifiques. Ces événements peuvent être des actions telles que le push du code, la création d’une pull request, ou même une planification via un cron. Chaque workflow est défini dans un fichier écrit au format YAML. Les workflows permettent d’automatiser des processus tels que le build, les tests, le déploiement… ce qui améliore l’efficacité de votre travail de développement.
Job
Un job est une unité de travail au sein d’un workflow. Les workflows peuvent contenir un ou plusieurs jobs, qui peuvent être exécutés en parallèle ou en séquence, en fonction de la configuration que vous définissez. Chaque job est exécuté dans un environnement spécifique, que vous pouvez personnaliser en fonction des exigences de votre application. Par exemple, vous pourriez avoir un job de build qui compile votre code source, suivi d’un job de test qui exécute des tests unitaires.
Steps
Les steps sont les étapes individuelles qui composent un job. Chaque step représente une action spécifique à effectuer, comme la compilation du code, l’exécution de tests, la création de packages, ou le déploiement. Les steps sont exécutés de manière séquentielle et peuvent dépendre les uns des autres. Vous pouvez utiliser des actions prédéfinies à partir du Marketplace GitHub Actions ou créer vos propres actions pour définir les étapes de votre job.
Checkout
L’action Checkout est l’une des actions les plus couramment utilisées dans les workflows GitHub Actions. Elle permet de cloner le code du projet dans l’environnement du workflow, rendant ainsi le code source disponible pour les étapes suivantes. Cela garantit que votre workflow dispose toujours de la dernière version du code source avant de commencer à exécuter les jobs.
Secrets
Les secrets sont des variables sensibles stockées de manière sécurisée et utilisées dans les workflows. Ils sont généralement utilisés pour stocker des informations sensibles telles que des clés d’API, des jetons d’accès ou des mots de passe. GitHub Actions offre un espace de stockage sécurisé pour ces secrets.
Environnements
Les environnements sont des groupes d’exécution pour les jobs. Vous pouvez configurer des environnements spécifiques pour vos jobs, ce qui permet de définir des contraintes pour leur exécution. Par exemple, vous pouvez avoir un environnement de développement, un environnement de test et un environnement de production et configurer vos workflows pour exécuter des jobs spécifiques dans ces environnements en fonction des besoins.
Conditions
GitHub Actions permet d’utiliser des conditions pour déterminer si un job doit être exécuté en fonction d’une évaluation. Par exemple, vous pouvez définir des conditions pour exécuter un job uniquement si une certaine branche est modifiée, si une pull request a été ouverte, ou si d’autres critères spécifiques sont remplis. Cela vous permet de personnaliser davantage le comportement de vos workflows en fonction des événements et des circonstances.
Marketplace GitHub Actions
Le Marketplace GitHub Actions est une ressource précieuse qui offre un vaste choix d’actions pré-construites que vous pouvez intégrer dans vos workflows. Ces actions sont créées par la communauté GitHub et couvrent une variété de cas d’usage.
Pour accéder au Marketplace GitHub Actions, rendez-vous ici ↗. Vous y trouverez une liste d’actions prédéfinies, triées par catégorie et par popularité. Vous pouvez parcourir ces actions pour trouver celles qui correspondent le mieux à vos besoins.
Créations des workflows
Pour créer des workflows dans GitHub Actions, vous devez :
- Créez le répertoire .github/workflows : Si ce répertoire n’existe pas déjà dans votre projet, créez-le.
- Créez un fichier de workflow : Dans le répertoire
.github/workflows
, créez un fichier YAML pour définir votre workflow. Vous pouvez nommer ce fichier comme vous le souhaitez, mais il doit posséder l’extension.yml
. Par exemple,build.yml
.
Syntaxe des Workflows
La syntaxe des fichiers de workflows GitHub Actions est basée sur le YAML. L’utilisation du YAML rend la définition des workflows intuitive et lisible, ce
Structure de base
Un fichier de workflow GitHub Actions commence généralement par une structure de base qui définit les propriétés de celui-ci :
name
: Il s’agit du nom de votre workflow.on
: Cette section définit les événements déclencheurs du workflow. Dans cet exemple, le workflow est déclenché à chaque push sur la branche principale (main) et seulement sur cette branche.
Jobs et steps
Ensuite on retrouve la définition des jobs et des steps : structure :
jobs
: Cette section définit les jobs à exécuter dans le workflow. Ici il y a un job appelé “build”.runs-on
: Cette ligne indique l’environnement sur lequel le job sera exécuté. Ici, il s’agit d’une Ubuntu.steps
: Cette section définit la suite d’actions ou de commandes à exécuter.
Utilisation d’actions de la marketplace
GitHub Actions encourage l’utilisation d’actions de sont marketplace, qui sont des composants réutilisables permettant d’automatiser des tâches spécifiques. Vous pouvez aussi créer vos propres actions. Voici comment utiliser une action prédéfinie pour l’étape “Checkout du code” :
name
: Le nom de l’étape.uses
: L’action à utiliser. Dans cet exemple,actions/checkout@v2
est l’action qui clone le code source du projet.
Gestion des Artifacts
Les artifacts sont des fichiers ou des dossiers générés par un job et qui
peuvent être archivés et partagés entre les jobs d’un même workflow. Ils
permettent de stocker des résultats importants tels que des fichiers de build,
des rapports de test ou des binaires. Vous pouvez utiliser l’action
upload-artifact
pour archiver des artifacts et l’action download-artifact
pour les récupérer dans d’autres jobs.
Exemple:
Matrices
Les matrices vous permettent d’exécuter en parallèle un même job avec plusieurs configurations différentes. Cela peut être utile lorsque vous avez besoin de tester votre application sur différentes versions de langages, de systèmes d’exploitation ou de dépendances. Vous pouvez définir une matrice de configurations dans votre fichier de workflow pour exécuter un job pour chaque combinaison de valeurs que vous spécifiez.
Un exemple :
Cet exemple permet de lancer des tests sur des roles Ansible avec molecule sur différents OS.
Utilisation de l’API GitHub
GitHub Actions permet d’interagir avec l’API GitHub directement depuis vos
workflows. Vous pouvez créer, mettre à jour ou extraire des informations de
votre projet, des pull requests ou des problèmes en utilisant des actions
prédéfinies telles que actions/github-script
. Cela permet par exemple de poser
des tags, de créer des commentaires automatiques…
La CLI GitHub (gh)
La CLI GitHub gh
permet d’interagir avec GitHub directement depuis votre
terminal. L’utilisation de La CLI GitHub dans vos workflows peut vous offrir des
fonctionnalités supplémentaires pour automatiser et simplifier votre flux de
travail de développement.
Installation de La CLI GitHub
Pour commencer, vous devez installer La CLI GitHub sur votre système. Vous pouvez suivre les instructions d’installation officielles pour votre système d’exploitation sur la page GitHub CLI ↗.
Vous pouvez aussi l’installer avec asdf vm :
Une fois installé, vous pouvez utiliser gh
pour effectuer diverses opérations
sur vos projets GitHub, notamment la création de pull requests, la gestion
des problèmes, la consultation des informations de projet et bien plus
encore.
Intégration de La CLI GitHub dans les Workflows GitHub Actions
La CLI GitHub peut être utilisée dans les workflows GitHub Actions pour automatiser certaines tâches, notamment la création de pull requests, la gestion des étiquettes ou l’accès aux données de votre projet GitHub.
Voici un exemple de workflow qui utilise La CLI GitHub pour créer une pull request à partir d’une branche :
Sécurité et Accès aux Secrets
Lorsque vous utilisez la CLI GitHub dans vos workflows GitHub Actions, assurez-vous
de gérer les autorisations et l’accès aux secrets de manière sécurisée. Dans
l’exemple ci-dessus, nous utilisons le token GitHub ${{ secrets.GITHUB_TOKEN }}
pour authentifier la CLI GitHub. Veillez à ne pas exposer vos tokens ou vos
informations sensibles dans vos workflows.
En utilisant La CLI GitHub en conjonction avec GitHub Actions, vous pouvez automatiser des tâches spécifiques de manière plus avancée et simplifier la gestion de vos workflows. Cette intégration vous offre davantage de flexibilité pour personnaliser et optimiser votre processus de développement.
Lancer localement vos workflows avec act
act
est un outil open source qui vous permet de tester sur votre machine de
travail vos workflows avant de les pousser sur votre projet GitHub. Cette
approche vous permet d’accélérer le processus de développement, d’identifier les
erreurs potentielles et de valider vos workflows sans avoir à attendre une
exécution réelle sur GitHub.
Installation de act
Pour commencer à utiliser act
, vous devez l’installer sur votre système. Voici
comment procéder avec asdf :
Autre solution pour le télécharger :
- Téléchargez la dernière version de
act
depuis le projet GitHub ↗. - Installez
act
en suivant les instructions d’installation spécifiques à votre système d’exploitation.
Utilisation de act
Une fois act
installé, vous pouvez l’utiliser pour exécuter des workflows
GitHub Actions localement. Voici comment fonctionne la commande de base :
<nom-du-job>
: Remplacez ceci par le nom du job que vous souhaitez exécuter. Si vous ne spécifiez pas de nom de job,act
exécutera le premier job défini dans votre fichier de workflow.
Par exemple, si vous avez un fichier de workflow nommé ci-cd.yml
avec un job
appelé build
, vous pouvez lancer le test localement avec la commande suivante
:
act
utilise Docker pour créer
un environnement d’exécution isolé basé sur les actions définies dans votre
workflow. Il exécutera ensuite le job spécifié, vous permettant de voir les
résultats.
Personnalisation de l’environnement
Vous pouvez personnaliser l’environnement d’exécution de act
en utilisant des
fichiers de configuration spécifiques, tels que .actrc
ou .github/act.yml
.
Cela vous permet de définir des variables d’environnement, des secrets, ou
d’autres paramètres nécessaires à votre workflow.
Conclusion
Vous l’aurez compris, GitHub Actions est une puissante solution de CI/CD intégrée qui offre de nombreuses fonctionnalités pour automatiser et améliorer vos projets.
Plus d’infos
Site Officiel et Documentation
- Documentation GitHub Actions ↗ : Cette documentation officielle fournit une vue d’ensemble complète de GitHub Actions.
- Guides pour GitHub Actions ↗ : Ces guides inclus dans la documentation officielle offrent des cas d’usage spécifiques et des exemples pour aider à configurer les workflows GitHub Actions.
- Démarrage rapide pour GitHub Actions ↗ : Une section de la documentation officielle qui propose des moyens rapides pour créer des flux de travail GitHub Actions.
Blogs
- Comment se servir de GitHub Actions ? ↗ : Un article de blog qui explique comment utiliser GitHub Actions pour l’intégration continue et le déploiement continu.
Livres
- GitHub Actions: Par la pratique (French Edition) - Amazon.com ↗ : Un livre disponible sur Amazon qui propose une démarche pédagogique basée sur la pratique avec des exercices et la création de scénarios réels pour couvrir l’ensemble des fonctionnalités de GitHub Actions.