Skip to main content

Migration de Travis CI vers GitHub Actions

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

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 « Comprendre GitHub Actions Â».

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 flux de travail. Pour plus d’informations, consultez « Stocker des informations dans des 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 « RĂ©fĂ©rences des variables Â».

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 « Workflows Â».

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 « Adding a workflow status badge Â».

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 « ExĂ©cution de variantes de tĂąches dans un workflow Â».

Voici un exemple qui compare la syntaxe pour chaque systĂšme.

Syntaxe Travis CI pour une matrice

matrix:
  include:
    - rvm: '2.5'
    - rvm: '2.6.3'

Syntaxe GitHub Actions pour une matrice

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 « Workflow syntax for GitHub Actions Â».

Voici un exemple de syntaxe pour chaque systĂšme.

Syntaxe Travis CI pour cibler des branches spĂ©cifiques

branches:
  only:
    - main
    - 'mona/octocat'

Syntaxe GitHub Actions pour cibler des branches spécifiques

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.

Syntaxe Travis CI pour l’extraction des sous-modules

git:
  submodules: false

Syntaxe GitHub Actions pour l’extraction des sous-modules

- uses: actions/checkout@v5
  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: '14.x'
           site: "prod"
           datacenter: "site-a"
         - node-version: '16.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 du dĂ©ploiement peuvent nĂ©cessiter une approbation manuelle pour qu’un flux de travail accĂšde aux secrets de l’environnement. Pour plus d’informations, consultez « Secrets Â».

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 « Comprendre GitHub Actions Â».

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 « Gestion des exĂ©cuteurs auto-hĂ©bergĂ©s Â».

Travaux simultanĂ©s et durĂ©e d’exĂ©cution

Les travaux simultanĂ©s et les durĂ©es d’exĂ©cution des workflows dans GitHub Actions peuvent varier selon votre plan GitHub. Pour plus d’informations, consultez « Facturation et utilisation Â».

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 GĂ©nĂ©ration et test de votre code.

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 « Workflow syntax for 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 « Workflow syntax for 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 « Workflow syntax for 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 « Ă‰valuer les expressions dans les workflows et les actions Â».

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 « RĂ©utilisation des automatisations Â».

Voici un exemple de syntaxe pour chaque systĂšme.

Syntaxe Travis CI pour les phases et les Ă©tapes

language: python
python:
  - "3.7"

script:
  - python script.py

Syntaxe GitHub Actions pour les phases et les étapes

jobs:
  run_python:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-python@v5
        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.

Ces exemples illustrent la syntaxe du cache pour chaque systĂšme.

Syntaxe Travis CI pour la mise en cache

language: node_js
cache: npm

Syntaxe GitHub Actions pour la mise en cache

- name: Cache node modules
  uses: actions/cache@v4
  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.

Syntaxe Travis CI pour une variable d’environnement

env:
  - MAVEN_PATH="/usr/local/maven"

Workflow GitHub Actions avec une variable d’environnement

jobs:
  maven-build:
    env:
      MAVEN_PATH: '/usr/local/maven'

Génération avec Node.js

Travis CI pour gĂ©nĂ©rer avec Node.js

install:
  - npm install
script:
  - npm run build
  - npm test

Workflow GitHub Actions pour générer avec Node.js

name: Node.js CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '16.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 « Ă‰criture de workflows Â».