Skip to main content
Nous publions des mises à jour fréquentes de notre documentation, et la traduction de cette page peut encore être en cours. Pour obtenir les informations les plus actuelles, consultez la documentation anglaise.

Migration de Travis CI vers GitHub Actions

GitHub Actions et Travis CI partagent plusieurs similitudes, ce qui facilite grandement la migration vers GitHub Actions.

Remarque : Les exécuteurs hébergés sur GitHub ne sont pas pris en charge sur GitHub Enterprise Server. Vous pouvez voir plus d’informations sur le support futur planifié dans la GitHub public roadmap.

Introduction

Ce guide vous aide à migrer de Travis CI vers GitHub Actions. Il compare leurs concepts et leur syntaxe, décrit les similitudes et illustre leurs différentes approches des tâches courantes.

Avant de commencer

Avant de commencer votre migration vers GitHub Actions, il est utile de vous familiariser avec son fonctionnement :

Comparaison de l’exécution des travaux

Pour vous permettre de contrôler quand des tâches CI sont exécutées, un workflow GitHub Actions utilise des travaux qui s’exécutent en parallèle par défaut. Chaque travail contient des étapes exécutées dans une séquence que vous définissez. Si vous devez exécuter des actions d’installation et de nettoyage pour un travail, vous pouvez définir des étapes dans chaque travail pour effectuer ces opérations.

Similitudes clés

GitHub Actions et Travis CI partagent certaines similitudes, et la compréhension de celles-ci à l’avance peut faciliter le processus de migration.

Utilisation de la syntaxe YAML

Travis CI et GitHub Actions utilisent tous deux YAML pour créer des travaux et des workflows, et ces fichiers sont stockés dans le dépôt du code. Pour plus d’informations sur la façon dont GitHub Actions utilise YAML, consultez « Création d’un fichier de workflow ».

Variables personnalisées

Travis CI vous permet de définir des variables et de les partager entre les phases. De même, GitHub Actions vous permet de définir des variables pour un workflow. Pour plus d’informations, consultez « Variables ».

Les variables par défaut

Travis CI et GitHub Actions incluent les variables d’environnement par défaut que vous pouvez utiliser dans vos fichiers YAML. Pour GitHub Actions, vous pouvez les voir répertoriées dans « Variables d’environnement par défaut ».

Traitement parallèle des travaux

Travis CI peut utiliser des stages pour exécuter des travaux en parallèle. De même, GitHub Actions exécute des jobs en parallèle. Pour plus d’informations, consultez « Création de travaux dépendants ».

Badges d’état

Travis CI et GitHub Actions prennent en charge les badges d’état, qui vous permettent d’indiquer si une build réussit ou échoue. Pour plus d’informations, consultez « Ajout d’un badge d’état de workflow à votre dépôt ».

Utilisation d’une matrice

Travis CI et GitHub Actions prennent en charge une matrice, ce qui vous permet d’effectuer des tests à l’aide de combinaisons de systèmes d’exploitation et de packages logiciels. Pour plus d’informations, consultez « Utilisation d’une matrice pour vos travaux ».

Voici un exemple de comparaison de la syntaxe pour chaque système :

Travis CI GitHub Actions
matrix:
  include:
    - rvm: 2.5
    - rvm: 2.6.3
jobs:
  build:
    strategy:
      matrix:
        ruby: [2.5, 2.6.3]

Ciblage de branches spécifiques

Travis CI et GitHub Actions vous permettent de cibler votre CI vers une branche spécifique. Pour plus d’informations, consultez « Syntaxe de workflow pour GitHub Actions ».

Voici un exemple de syntaxe pour chaque système :

Travis CI GitHub Actions
branches:
  only:
    - main
    - 'mona/octocat'
on:
  push:
    branches:
      - main
      - 'mona/octocat'

Extraction de sous-modules

Travis CI et GitHub Actions vous permettent de contrôler si les sous-modules sont inclus dans le clone du dépôt.

Voici un exemple de syntaxe pour chaque système :

Travis CI GitHub Actions
git:
  submodules: false
- uses: actions/checkout@v3
  with:
    submodules: false

Utilisation de variables d’environnement dans une matrice

Travis CI et GitHub Actions peuvent ajouter des variables personnalisées à une matrice de test, ce qui vous permet de faire référence à la variable lors d’une étape ultérieure.

Dans GitHub Actions, vous pouvez utiliser la clé include pour ajouter des variables d’environnement personnalisées à une matrice. Dans cet exemple, les entrées de matrice pour node-version sont configurées pour utiliser des valeurs différentes pour les variables d’environnement site et datacenter. L’étape Echo site details utilise ensuite env: ${{ matrix.env }} pour faire référence aux variables personnalisées :

name: Node.js CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
       include:
         - node-version: 10.x
           site: "prod"
           datacenter: "site-a"
         - node-version: 12.x
           site: "dev"
           datacenter: "site-b"
    steps:
      - name: Echo site details
        env:
          SITE: ${{ matrix.site }}
          DATACENTER: ${{ matrix.datacenter }}
        run: echo $SITE $DATACENTER

Fonctionnalités clés dans GitHub Actions

Lors de la migration à partir de Travis CI, tenez compte des fonctionnalités clés suivantes dans GitHub Actions :

Stockage des secrets

GitHub Actions vous permet de stocker des secrets et de les référencer dans vos travaux. Les organisations GitHub Actions peuvent limiter les dépôts pouvant accéder aux secrets de l’organisation. Les règles de protection de l’environnement peuvent nécessiter une approbation manuelle pour qu’un workflow accède aux secrets d’environnement. Pour plus d’informations, consultez « Secrets chiffrés ».

Partage de fichiers entre des travaux et des workflows

GitHub Actions inclut la prise en charge intégrée du stockage d’artefacts, ce qui vous permet de partager des fichiers entre des travaux dans un workflow. Vous pouvez également enregistrer les fichiers résultants et les partager avec d’autres workflows. Pour plus d’informations, consultez « Partage de données entre des travaux ».

Hébergement de vos propres exécuteurs

Si vos travaux nécessitent un matériel ou un logiciel spécifique, GitHub Actions vous permet d’héberger vos propres exécuteurs et de leur envoyer vos travaux pour traitement. GitHub Actions vous permet également d’utiliser des stratégies pour contrôler l’accès à ces exécuteurs, en accordant l’accès au niveau de l’organisation ou du dépôt. Pour plus d’informations, consultez « Hébergement de vos propres exécuteurs ».

Utilisation de différents langages dans GitHub Actions

Lorsque vous utilisez différents langages dans GitHub Actions, vous pouvez créer une étape dans votre travail pour configurer vos dépendances de langages. Pour plus d’informations sur l’utilisation d’un langage particulier, consultez le guide spécifique :

Exécution des scripts

GitHub Actions peut utiliser des étapes run pour exécuter des scripts ou des commandes d’environnement. Pour utiliser un shell particulier, vous pouvez spécifier le type shell lors de la fourniture du chemin au script. Pour plus d’informations, consultez « Syntaxe de workflow pour GitHub Actions ».

Par exemple :

steps:
  - name: Run build script
    run: ./.github/scripts/build.sh
    shell: bash

Gestion des erreurs dans GitHub Actions

Lors de la migration vers GitHub Actions, il existe différentes approches de la gestion des erreurs que vous devrez peut-être connaître.

Gestion des erreurs de script

GitHub Actions arrête immédiatement un travail si l’une des étapes retourne un code d’erreur. Pour plus d’informations, consultez « Syntaxe de workflow pour GitHub Actions ».

Gestion des erreurs de travail

GitHub Actions utilise des conditions if pour exécuter des travaux ou des étapes dans certaines situations. Par exemple, vous pouvez exécuter une étape quand une autre étape entraîne un failure(). Pour plus d’informations, consultez « Syntaxe de workflow pour GitHub Actions ». Vous pouvez également utiliser continue-on-error pour empêcher l’arrêt de l’exécution d’un workflow quand un travail échoue.

Migration de la syntaxe pour les expressions et les conditions

Pour exécuter des travaux sous des expressions conditionnelles, Travis CI et GitHub Actions partagent une syntaxe de condition if similaire. GitHub Actions vous permet d’utiliser la condition if pour empêcher l’exécution d’un travail ou d’une étape, sauf si une condition est remplie. Pour plus d’informations, consultez « Expressions ».

Cet exemple montre comment une condition if peut contrôler si une étape est exécutée :

jobs:
  conditional:
    runs-on: ubuntu-latest
    steps:
      - run: echo "This step runs with str equals 'ABC' and num equals 123"
        if: env.str == 'ABC' && env.num == 123

Migration de phases vers des étapes

Là où Travis CI utilise des phases pour exécuter des étapes, GitHub Actions a des étapes qui exécutent des actions. Vous pouvez trouver des actions prédéfinies dans la GitHub Marketplace, ou vous pouvez créer vos propres actions. Pour plus d’informations, consultez « Création d’actions ».

Voici un exemple de syntaxe pour chaque système :

Travis CI GitHub Actions
language: python
python:
  - "3.7"

:
  - python script.py
jobs:
  run_python:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-python@v4
        with:
          python-version: '3.7'
          architecture: 'x64'
      - run: python script.py

Mise en cache des dépendances

Travis CI et GitHub Actions vous permettent de mettre manuellement en cache les dépendances pour une réutilisation ultérieure.

Cet exemple illustre la syntaxe du cache pour chaque système.

Travis CI GitHub Actions
language: node_js
cache: npm
- name: Cache node modules
  uses: actions/cache@v3
  with:
    path: ~/.npm
    key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }}
    restore-keys: v1-npm-deps-

Exemples de tâches courantes

Cette section compare la façon dont GitHub Actions et Travis CI effectuent des tâches courantes.

Configuration des variables d’environnement

Vous pouvez créer des variables d’environnement personnalisées dans un travail GitHub Actions. Par exemple :

Travis CI Workflow GitHub Actions
env:
  - MAVEN_PATH="/usr/local/maven"
jobs:
  maven-build:
    env:
      MAVEN_PATH: '/usr/local/maven'

Génération avec Node.js

Travis CI Workflow GitHub Actions
install:
  - npm install
script:
  - npm run build
  - npm test
name: Node.js CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '12.x'
      - run: npm install
      - run: npm run build
      - run: npm test

Étapes suivantes

Pour continuer à découvrir les principales fonctionnalités de GitHub Actions, consultez « Découvrir GitHub Actions ».