Introduction GitHub Action
GitHub Actions est un service d'automatisation de flux de travail fourni par GitHub. Il permet aux développeurs d'automatiser une grande variété de tâches, telles que la construction, les tests, le déploiement et la publication de code.
Les avantages de GitHub Actions
GitHub Actions offre de nombreux avantages, notamment :
- L'intégration native avec GitHub : GitHub Actions est entièrement intégré à GitHub, ce qui permet aux développeurs de créer et de gérer leurs workflows de manière simple et intuitive.
- La flexibilité : GitHub Actions offre une grande flexibilité aux développeurs, leur permettant de créer des workflows personnalisés pour répondre à leurs besoins spécifiques.
- La scalabilité : GitHub Actions est conçu pour être scalable, ce qui permet aux développeurs de gérer des workflows complexes et à grande échelle.
Comment créer un workflow GitHub Actions
Pour créer un workflow GitHub Actions, vous devez créer un fichier YAML dans le dossier /.github/workflows/
de votre dépôt GitHub. Le fichier YAML définit les étapes que vous souhaitez automatiser.
Voici un exemple de fichier YAML simple :
name: test code sur ubuntu avec node 18
on:
push:
branches:
- dev
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: importe le dépôt sur la VM ubuntu
uses: actions/checkout@v4
- name: défini la version de node à utiliser
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Installation des dépendences
run: npm install
- name: Lancement application node
run: node app.js
Chaque job est défini par un ensemble taches. Une étape est une action qui exécute une ou plusieurs tâches spécifiques.
Dans cet exemple, le workflow s'exécute à chaque push de la branche dev, le job build effectue les taches suivantes :
- Lance un conteneur ubuntu.
- importe le dépôt sur le conteneur.
- Défini la version de node à utiliser.
- Installe les dépendances.
- lance l'application node.
Événements déclencheurs
Un workflow GitHub Actions est déclenché par un événement. Les événements les plus courants sont les suivants :
- Push : un commit est poussé vers le dépôt.
- Pull request : un pull request est créée ou mise à jour.
- Schedule : le workflow est exécuté à une heure précise.
- workflow_dispatch : déclencher manuellement un événement.
Gestion des Secrets
Les secrets sont des informations sensibles, telles que des mots de passe ou des clés API, que vous ne souhaitez pas exposer publiquement. Vous pouvez utiliser des secrets dans vos workflows GitHub Actions pour accéder à ces informations.
Pour créer un secret, rendez-vous dans la page Settings de votre dépôt et cliquez sur l'onglet "Secrets and variables" puis "actions". Cliquez ensuite sur le bouton "New repository secret" et saisissez le nom et la valeur du secret puis "add secret".
Pour utiliser un secret dans un workflow, vous pouvez l'utiliser avec la syntaxe suivante ${{ secrets.<nom_du_secret> }}
.
Installation d'un runner
Github Actions peut être exécuté sur une machine distante, il faudra installer un runner sur cette machine pour qu'elle puisse exécuter les commandes du workflow.
Pour installer un runner, rendez-vous dans la page Settings de votre dépôt et cliquez sur l'onglet Actions puis Runners. Cliquez ensuite sur le bouton New self-hosted runner et choisissez le système de votre machine puis exécutez les commandes indiquées par github.
Pour installer le runner en tant que service, il faudra exécuter la commande suivante :
sudo ./svc.sh install
Cette commande remplace ./run.sh
, il faudra ajouter runs-on: self-hosted
dans le fichier YAML.
Déploiement
GitHub Actions peut être utilisé pour automatiser le déploiement de votre code sur votre serveur. Pour ce faire, vous devez créer un job de déploiement qui exécute les étapes nécéssaire à votre déploiement.
Voici un exemple de job de déploiement :
name: Deploiement
on:
push:
branches:
- main
jobs:
deploy:
runs-on: self-hosted
steps:
- name: import du pépôt
uses: actions/checkout@v4
- name: défini la version de node à utiliser
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Installation des dépendences
run: npm install
- name: Deploiement
run: node app.js
Conclusion
GitHub Actions est un outil puissant qui peut vous aider à automatiser une grande variété de tâches. En apprenant à utiliser GitHub Actions, vous pouvez gagner du temps et améliorer la qualité de votre code.
Pour en apprendre d'avantage consultez la documention github action
Exercices
- Créer un workflow de test.
- Créer un workflow de déploiement.
- Utiliser les variables de workflow.
- Utiliser les secrets dans un workflow.
- Utiliser les conditions dans un workflow.
- Utiliser un runner auto-hébergés.
- Intégrer GitHub Action en tant que services.