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 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 ».