Construction et Test de Base avec GitHub Actions

GitBeginner
Pratiquer maintenant

Introduction

Dans le développement logiciel moderne, l'Intégration Continue (CI) est une pratique cruciale où les développeurs fusionnent fréquemment leurs modifications de code dans un dépôt central. Des constructions (builds) et des tests automatisés sont exécutés pour vérifier ces changements.

GitHub Actions est une plateforme CI/CD populaire qui vous permet d'automatiser votre pipeline de construction, de test et de déploiement directement dans GitHub.

Dans ce laboratoire, vous apprendrez à créer un workflow GitHub Actions de base pour un projet Node.js. Vous définirez des étapes pour configurer l'environnement Node.js, installer les dépendances et exécuter les tests. Enfin, vous committerez et pousserez ces changements vers votre dépôt GitHub.

Ce laboratoire s'appuie sur le dépôt que vous avez créé lors des laboratoires précédents. Vous clonerez le dépôt github-actions-demo et créerez un workflow CI pour un projet Node.js.

À la fin de ce laboratoire, vous comprendrez la structure d'un fichier de workflow .yml et comment configurer les étapes CI essentielles.

Ajouter la configuration Node.js avec l'action uses actions/setup-node@v4

Dans cette étape, vous allez cloner le dépôt et créer un fichier de workflow avec la configuration de l'environnement Node.js. Les workflows GitHub Actions sont définis dans des fichiers YAML situés dans le répertoire .github/workflows de votre dépôt.

  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
  1. Naviguez dans le dépôt cloné :
cd ~/project/github-actions-demo
  1. Créez un nouveau fichier nommé node-ci.yml à l'intérieur du répertoire .github/workflows :
touch .github/workflows/node-ci.yml
  1. Ouvrez .github/workflows/node-ci.yml dans le WebIDE et commencez par ajouter le nom du workflow et le déclencheur :
name: Node.js CI

on: [push]
  1. Ajoutez la section jobs et définissez la tâche build avec son exécuteur (runner) :
jobs:
  build:
    runs-on: ubuntu-latest
  1. Ajoutez la section steps. Tout d'abord, ajoutez l'étape de checkout pour récupérer le code du dépôt :
steps:
  - uses: actions/checkout@v4
  1. Ajoutez l'étape de configuration de Node.js :
- name: Use Node.js
  uses: actions/setup-node@v4
  with:
    node-version: "20"

Votre fichier complet devrait maintenant ressembler à ceci :

name: Node.js CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"

Explication

  • name: Le nom de votre workflow.
  • on: [push]: Déclenche le workflow chaque fois que du code est poussé (pushed) vers le dépôt.
  • jobs: Regroupe toutes les tâches qui s'exécutent dans le workflow.
  • runs-on: ubuntu-latest: Configure la tâche pour qu'elle s'exécute sur une machine virtuelle hébergée par GitHub exécutant la dernière version d'Ubuntu.
  • steps: Une séquence de tâches.
  • uses: actions/checkout@v4: Effectue le checkout de votre dépôt afin que le workflow puisse y accéder.
  • uses: actions/setup-node@v4: C'est l'action officielle pour installer Node.js sur l'exécuteur (runner). Nous spécifions la version '20'.

Ajouter une étape pour installer les dépendances avec run npm install

Maintenant que l'environnement est configuré avec Node.js, l'étape logique suivante dans un pipeline CI (Intégration Continue) est d'installer les dépendances du projet. Cela garantit que toutes les bibliothèques externes requises par votre application sont disponibles avant la construction ou les tests.

Rouvrez le fichier .github/workflows/node-ci.yml et ajoutez l'étape pour installer les dépendances.

Ajoutez les lignes suivantes à la fin de la section steps (assurez-vous de maintenir l'indentation) :

- name: Install dependencies
  run: npm install

Votre fichier .github/workflows/node-ci.yml complet devrait maintenant ressembler à ceci :

name: Node.js CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"
      - name: Install dependencies
        run: npm install

Explication

  • run: npm install: Ceci exécute la commande npm install dans le shell de l'exécuteur (runner). Elle lit le fichier package.json (que nous créerons plus tard) et installe les dépendances listées.

Ajouter une étape pour exécuter les tests avec run npm test

Après l'installation des dépendances, l'étape la plus critique de l'Intégration Continue (CI) est l'exécution des tests automatisés. Cela garantit que les nouvelles modifications ne cassent pas les fonctionnalités existantes.

Ouvrez le fichier .github/workflows/node-ci.yml et ajoutez l'étape pour exécuter les tests.

Ajoutez les lignes suivantes à la fin de la section steps :

- name: Run tests
  run: npm test

Votre fichier .github/workflows/node-ci.yml final devrait ressembler à ceci :

name: Node.js CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"
      - name: Install dependencies
        run: npm install
      - name: Run tests
        run: npm test

Explication

  • run: npm test: Ceci exécute le script de test défini dans votre package.json. Si les tests échouent (sortent avec un code différent de zéro), le workflow GitHub Action sera marqué comme échoué.

Créer un fichier package.json et un fichier de test simple

Pour que le workflow que nous venons de créer fonctionne réellement, nous avons besoin d'une structure de projet Node.js. Plus spécifiquement, npm install nécessite un fichier package.json, et npm test nécessite un script de test défini.

  1. Assurez-vous d'être dans le répertoire du dépôt (repository):
cd ~/project/github-actions-demo
  1. Créez un fichier package.json à la racine du dépôt :
touch package.json
  1. Ouvrez package.json et ajoutez le contenu suivant. Ceci définit un projet de base et un script de test simple qui réussit toujours (sort avec le code 0).
{
  "name": "github-actions-demo",
  "version": "1.0.0",
  "description": "Demo project",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Running tests...\" && exit 0"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
  1. Ensuite, mettons à jour index.js pour représenter le code de notre application.
echo "console.log('Hello, GitHub Actions!');" > index.js

Vous disposez maintenant d'un projet Node.js minimal qui satisfait les exigences du workflow que nous avons défini :

  1. npm install s'exécutera (même s'il n'y a pas de dépendances, il vérifiera package.json).
  2. npm test exécutera la commande echo "Running tests..." && exit 0.

Commit, push, et vérifiez la construction/les tests dans l'exécution du workflow

Maintenant que nous avons créé la définition du workflow et les fichiers du projet, nous devons les commiter et les pousser vers GitHub. Le fait de pousser ces commits déclenchera l'exécution des étapes que nous avons définies par le runner d'Action.

  1. Assurez-vous d'être dans le répertoire du dépôt (repository) :
cd ~/project/github-actions-demo
  1. Vérifiez le statut de votre dépôt :
git status
  1. Ajoutez tous les fichiers à la zone de staging :
git add .
  1. Commitez les changements avec un message descriptif :
git commit -m "Add Node.js CI workflow and project files"
  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 push.

Note de 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.

Vérifier l'exécution du Workflow

  1. Visitez votre dépôt sur GitHub dans un navigateur web : https://github.com/your-username/github-actions-demo
  2. Cliquez sur l'onglet Actions en haut de la page du dépôt.
  3. Vous devriez voir une exécution de workflow listée, probablement nommée "Add Node.js CI workflow and project files" ou "Node.js CI".

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

  1. Cliquez sur le titre de l'exécution du workflow, puis cliquez sur la tâche (job) build pour voir les journaux détaillés (logs).

Vous pouvez développer chaque étape pour voir ce qui s'est passé :

  • Checkout code : Montre que le dépôt a été extrait (checked out).
  • Use Node.js : Montre que Node.js v20 a été installé.
  • Install dependencies : Montre que npm install a été exécuté.
  • Run tests : Montre que npm test a été exécuté et vous devriez voir la sortie Running tests....

Si toutes les étapes se sont terminées avec succès, votre workflow CI fonctionne correctement.

GitHub Actions logs

Résumé

Dans ce laboratoire, vous avez réussi à créer un workflow d'Intégration Continue (CI) de base en utilisant GitHub Actions. Vous avez appris à :

  1. Créer un fichier de workflow .yml dans le répertoire .github/workflows.
  2. Configurer le workflow pour qu'il se déclenche lors des événements push.
  3. Utiliser l'action actions/setup-node pour configurer l'environnement Node.js.
  4. Ajouter des étapes pour installer les dépendances (npm install) et exécuter les tests (npm test).
  5. Configurer une structure de projet Node.js de base pour supporter le workflow.

Ces compétences constituent la base des pratiques DevOps modernes, vous permettant d'automatiser la vérification de votre code chaque fois que vous effectuez une modification.