Création du Premier Workflow GitHub Actions

GitBeginner
Pratiquer maintenant

Introduction

GitHub Actions est une plateforme d'intégration continue et de livraison continue (CI/CD) qui vous permet d'automatiser votre pipeline de construction (build), de test et de déploiement. Vous pouvez créer des workflows qui construisent et testent chaque pull request de votre dépôt, ou déploient les pull requests fusionnées en production.

Dans ce laboratoire, vous allez créer votre premier workflow simple. Vous apprendrez la structure de répertoire standard requise par GitHub Actions, comment définir le nom du workflow, comment spécifier les événements qui déclenchent le workflow, et comment définir des tâches (jobs) pour exécuter des commandes.

Ce laboratoire s'appuie sur le dépôt que vous avez créé lors du laboratoire précédent. Vous allez cloner le dépôt github-actions-demo dans votre environnement LabEx et y ajouter votre premier fichier de workflow.

Créer un nouveau fichier YAML nommé hello-world.yml dans .github/workflows

Dans cette étape, vous allez cloner le dépôt que vous avez créé lors du laboratoire précédent et créer votre premier fichier de workflow.

  1. Sur la page de votre dépôt GitHub pour github-actions-demo, cliquez sur le bouton vert Code.
  2. Assurez-vous que l'onglet HTTPS est sélectionné et copiez l'URL. Elle devrait ressembler à https://github.com/your-username/github-actions-demo.git.
  3. Ouvrez le terminal dans l'environnement LabEx. Le chemin par défaut est ~/project.
  4. Utilisez la commande git clone pour télécharger le dépôt. Remplacez your-username par votre nom d'utilisateur GitHub réel.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git

Exemple de sortie :

Cloning into 'github-actions-demo'...
remote: Enumerating objects: X, done.
remote: Counting objects: 100% (X/X), done.
remote: Total X (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (X/X), done.
  1. Naviguez dans le dépôt cloné :
cd ~/project/github-actions-demo
  1. Le répertoire .github/workflows devrait déjà exister suite au laboratoire précédent. Vérifiez son existence :
ls -R .github
  1. Créez un nouveau fichier nommé hello-world.yml à l'intérieur du répertoire .github/workflows. Ce fichier contiendra la configuration de notre workflow :
touch .github/workflows/hello-world.yml

Vous pouvez vérifier que le fichier a été créé avec succès :

ls -R .github

Vous devriez voir le répertoire workflows contenant à la fois main.yml (du laboratoire précédent) et hello-world.yml.

Ajouter la clé 'name' avec la valeur 'Hello World Workflow' au fichier YAML

Dans cette étape, vous allez commencer à modifier le fichier YAML pour définir votre workflow. Le premier élément que nous ajoutons habituellement est le name (nom) du workflow. Ce nom apparaîtra dans l'onglet Actions du dépôt GitHub, ce qui facilite son identification.

Ouvrez le fichier hello-world.yml en utilisant l'éditeur WebIDE. Vous pouvez trouver le fichier dans l'explorateur de fichiers sur le côté gauche, sous project/github-actions-demo/.github/workflows/.

Ajoutez le contenu suivant au fichier :

name: Hello World Workflow

Cette paire clé-valeur attribue un nom lisible par l'homme à votre workflow.

Après avoir ajouté le contenu, enregistrez le fichier (Ctrl+S ou Cmd+S).

Vous pouvez vérifier le contenu du fichier dans le terminal :

cat .github/workflows/hello-world.yml
Verify workflow name

Ajouter la clé 'on' avec l'événement 'push' pour déclencher lors des envois (pushes)

Dans cette étape, vous allez définir quand le workflow doit s'exécuter. Ceci est réalisé à l'aide du mot-clé on. Nous voulons que ce workflow s'exécute chaque fois que du code est poussé (pushed) vers le dépôt.

Ouvrez à nouveau .github/workflows/hello-world.yml et ajoutez les lignes suivantes sous la clé name :

on: [push]

Votre fichier devrait maintenant ressembler à ceci :

name: Hello World Workflow
on: [push]

La configuration on: [push] indique à GitHub Actions de déclencher ce workflow chaque fois qu'un git push est effectué sur n'importe quelle branche du dépôt.

Note : GitHub Actions prend en charge de nombreux autres événements de déclenchement. Par exemple :

  • pull_request : Se déclenche lorsqu'une pull request est ouverte, synchronisée ou fermée
  • workflow_dispatch : Permet un déclenchement manuel depuis l'onglet GitHub Actions
  • schedule : S'exécute selon un calendrier utilisant la syntaxe cron
  • release : Se déclenche lorsqu'une publication (release) est publiée
  • Et de nombreux autres événements comme issues, pull_request_review, etc.

Dans ce laboratoire, nous utilisons on: [push] car c'est le déclencheur le plus simple et le plus courant. Vous pourrez explorer d'autres types de déclencheurs à mesure que vous progresserez dans votre parcours avec GitHub Actions.

Enregistrez le fichier après avoir effectué les modifications.

Ajouter la section 'jobs' avec une tâche nommée 'build'

Dans cette étape, vous allez définir le travail réel que le workflow exécutera. Une exécution de workflow (workflow run) est composée d'un ou plusieurs jobs. Les jobs s'exécutent en parallèle par défaut.

Nous allons ajouter une section jobs contenant un seul job nommé build. Ce job s'exécutera sur un environnement Ubuntu et exécutera une commande simple.

Ajoutez le contenu suivant à votre fichier .github/workflows/hello-world.yml :

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Say Hello
        run: echo "Hello, World!"

Décortiquons ce que cela signifie :

  • jobs: : Démarre la section des jobs.
  • build: : L'identifiant (ID) du job.
  • runs-on: ubuntu-latest : Spécifie le type de machine (runner) sur lequel le job doit s'exécuter.
  • steps: : Une liste des tâches à exécuter dans le job.
  • run: echo "Hello, World!" : Une commande shell à exécuter.

Votre fichier complet devrait maintenant ressembler à ceci :

name: Hello World Workflow
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Say Hello
        run: echo "Hello, World!"

Enregistrez le fichier.

Commiter et envoyer (push) le fichier de workflow en utilisant les commandes git

Dans cette étape, vous allez valider (commit) le nouveau fichier de flux de travail et le pousser (push) vers GitHub. Cela déclenchera le flux de travail que vous venez de créer.

  1. Assurez-vous d'être dans le répertoire du dépôt :
cd ~/project/github-actions-demo
  1. Vérifiez l'état de votre dépôt pour voir le fichier non suivi :
git status
  1. Ajoutez le nouveau fichier à la zone de staging (staging area) :
git add .github/workflows/hello-world.yml
  1. Validez les changements avec un message descriptif :
git commit -m "Add hello world workflow"

Exemple de sortie :

[main ... ] Add hello world workflow
 1 file changed, X insertions(+), X deletions(-)
 create mode 100644 .github/workflows/hello-world.yml
  1. Poussez les changements vers le dépôt distant sur GitHub :
git push

Note sur l'authentification :
Lorsque vous exécutez git push, le WebIDE vous invitera automatiquement à vous authentifier. Suivez ces étapes détaillées :

  1. Une fenêtre contextuelle apparaîtra avec le message : "The extension 'GitHub' wants to sign in using GitHub." Cliquez sur Allow.
  2. Une nouvelle notification apparaîtra. Cliquez sur "Copy&Continue to GitHub", puis cliquez sur "Open" dans l'invite suivante.
  3. Connectez-vous à votre compte GitHub dans la fenêtre du navigateur qui s'ouvre, et entrez le code d'autorisation qui a été copié. Après avoir confirmé l'autorisation, la page se fermera automatiquement.
  4. Attendez quelques secondes, et vous verrez le terminal terminer avec succès l'opération de poussée (push).

Note sur la confidentialité : Le WebIDE demandera un accès complet à votre compte GitHub à des fins d'authentification. Vous n'avez pas à vous soucier des problèmes de confidentialité - la VM LabEx sera immédiatement détruite après avoir terminé le laboratoire actuel, et vos informations d'identification et d'autorisation ne seront pas conservées.

Ce processus d'authentification ne nécessite aucune configuration manuelle du nom d'utilisateur ou du Personal Access Token (Jeton d'Accès Personnel).

Après avoir suivi les étapes d'authentification, vous verrez une sortie similaire à ce qui suit :

Exemple de sortie :

Enumerating objects: X, done.
Counting objects: 100% (X/X), done.
Delta compression using up to 4 threads
Compressing objects: 100% (X/X), done.
Writing objects: 100% (X/X), XXX bytes | XXX.00 KiB/s, done.
Total X (delta X), reused X (delta X), pack-reused 0
To https://github.com/your-username/github-actions-demo.git
   XXXXXXX..XXXXXXX  main -> main
  1. Visitez votre dépôt sur GitHub dans un navigateur web et naviguez vers l'onglet Actions. Vous devriez voir le "Hello World Workflow" en cours d'exécution ou terminé.
Verify workflow run

Note : Lorsque vous poussez du code, plusieurs Actions peuvent être déclenchées si vous avez plusieurs fichiers de flux de travail dans votre dépôt. Veuillez identifier l'exécution de flux de travail correcte en vérifiant le nom du flux de travail dans la barre latérale gauche ou en utilisant la liste des exécutions de flux de travail sur le côté droit.

  1. Cliquez sur l'exécution du flux de travail pour visualiser les journaux d'exécution détaillés. Vous verrez :
    • Le nom du flux de travail : "Hello World Workflow" en haut
    • Le nom du travail (job) : "build" dans la barre latérale gauche
    • L'exécution de l'étape (step) : Cliquez sur le travail "build" pour le développer, puis cliquez sur l'étape "Say Hello"
    • La sortie : Vous devriez voir la sortie Hello, World! affichée dans les journaux
Verify workflow run logs

Ceci vous donne une vue complète de la manière dont votre flux de travail s'est exécuté, y compris quelles étapes ont réussi et quelle sortie elles ont produite. Ceci est très utile pour le débogage et la compréhension de ce que fait votre flux de travail.

Résumé

Dans ce laboratoire, vous avez réussi à créer votre premier workflow GitHub Actions. Vous avez appris à :

  1. Créer la structure de répertoire .github/workflows requise.
  2. Définir un workflow en utilisant la syntaxe YAML.
  3. Définir le name (nom) du workflow et les événements de déclenchement en utilisant on.
  4. Définir des jobs (tâches) et des steps (étapes) pour exécuter des commandes.
  5. Valider (commit) et envoyer (push) le workflow vers un dépôt.

Ce sont les éléments fondamentaux pour créer des pipelines CI/CD complexes capables de construire, tester et déployer votre logiciel automatiquement.