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 :
- Pour obtenir un exemple rapide illustrant un travail GitHub Actions, consultez « Démarrage rapide pour GitHub Actions ».
- Pour découvrir les concepts essentiels de GitHub Actions, consultez « Comprendre GitHub Actions ».
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 workflow. 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 « Stocker des informations dans 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 « À propos des 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@v4
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 « Utilisation de secrets dans GitHub Actions ».
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 « 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 :
- Génération et test de Node.js
- Génération et test de Python
- Génération et test de PowerShell
- Génération et test de Java avec Maven
- Génération et test de Java avec Gradle
- Génération et test de Java avec Ant
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 « Partage 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@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.
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@v4
- 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 ».