Implémenter des variables et des scripts dans un flux de travail
Maintenant que vous connaissez les composants d’un fichier de flux de travail, explorons comment personnaliser ces flux pour différents scénarios. Dans cette unité, nous allons nous concentrer sur l’utilisation des variables et des scripts pour optimiser le flux de travail.
Les variables offrent un moyen de stocker et de réutiliser des informations de configuration non sensibles. Vous pouvez stocker n’importe quelle donnée de configuration, comme des options de compilation, des noms d’utilisateur ou des noms de serveurs, sous forme de variables. Les variables sont interpolées sur la machine d’exécution qui exécute votre flux de travail. Les commandes exécutées dans les actions ou les étapes du flux de travail peuvent créer, lire et modifier des variables.
Vous pouvez définir vos propres variables personnalisées ou utiliser les variables d’environnement par défaut que GitHub définit automatiquement. Il existe deux façons de créer une variable personnalisée :
- Pour définir une variable d’environnement à utiliser dans un seul flux de travail, vous pouvez utiliser la clé
env
dans le fichier de flux de travail. - Pour définir une variable de configuration utilisable dans plusieurs flux de travail, vous pouvez la définir au niveau de l’organisation, du dépôt ou de l’environnement.
Définir des variables d’environnement pour un seul flux de travail
Pour définir une variable d’environnement personnalisée pour un seul flux de travail, vous pouvez utiliser la clé env
dans le fichier YAML du flux de travail. La portée d’une variable personnalisée définie de cette manière est limitée à l’élément où elle est définie. Vous pouvez définir des variables avec les portées suivantes :
- Pour l’ensemble du flux de travail, en utilisant
env
au niveau supérieur du fichier. - Pour le contenu d’un job dans le flux de travail, en utilisant
jobs.<job_id>.env
. - Pour une étape spécifique dans un job, en utilisant
jobs.<job_id>.steps[*].env
.
Remarque
Les clés jobs.<job_id>.env
et jobs.<job_id>.steps[*].env
mettent en œuvre des contextes, qui seront abordés plus loin dans ce module.
L’exemple de flux de travail suivant implémente deux variables, DAY_OF_WEEK
et Greeting
, pour produire un message de salutation lors de son exécution.
name: Greeting on variable day
on:
workflow_dispatch
env:
DAY_OF_WEEK: Monday
jobs:
greeting_job:
runs-on: ubuntu-latest
env:
Greeting: Hello
steps:
- name: "Say Hello"
run: echo "$Greeting, today is $DAY_OF_WEEK!"
Conventions de nommage pour les variables d’environnement
Lorsque vous définissez une variable d’environnement, vous ne pouvez pas utiliser les noms des variables d’environnement par défaut. Si vous tentez d’écraser la valeur de l’une de ces variables par défaut, l’affectation sera ignorée.
💡 Astuce
Pour obtenir la liste complète des variables d’environnement par défaut, consultez la page Variables d’environnement par défaut.
Créer des variables de configuration pour un dépôt
Pour créer des secrets ou des variables sur GitHub pour un dépôt appartenant à un compte personnel, vous devez être le propriétaire du dépôt.
Pour créer des secrets ou des variables sur GitHub pour un dépôt appartenant à une organisation, vous devez avoir un accès administrateur.
Enfin, pour créer des secrets ou des variables via l’API REST, que ce soit pour un dépôt personnel ou organisationnel, vous devez avoir un accès collaborateur.
Priorité des variables de configuration
Si une variable portant le même nom existe à plusieurs niveaux, la variable définie au niveau le plus bas prend le dessus.
Par exemple, si une variable définie au niveau de l’organisation a le même nom qu’une variable définie au niveau du dépôt, alors la variable du dépôt sera prioritaire.
De même, si une variable est définie au niveau de l’organisation, du dépôt et de l’environnement, la variable de l’environnement sera prioritaire.
Ajouter des scripts à votre flux de travail
Vous pouvez utiliser un flux de travail GitHub Actions pour exécuter des scripts et des commandes shell, qui seront lancés sur le runner assigné.
L’exemple suivant montre comment utiliser le mot-clé run
pour exécuter la commande suivante sur le runner :
jobs:
example-job:
runs-on: ubuntu-latest
steps:
- run: npm install -g bats
Pour exécuter un script stocké dans votre dépôt, vous devez d’abord récupérer (checkout) le dépôt sur le runner.
L’exemple suivant :
- récupère le dépôt ;
- définit le répertoire de travail (l’emplacement des scripts dans le dépôt) ;
- exécute le script
my-script.sh
.
jobs:
example-job:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./scripts
steps:
- name: Check out the repository to the runner
uses: actions/checkout@v4
- name: Run a script
run: ./my-script.sh
Tout script que vous souhaitez exécuter dans un job de flux de travail doit être exécutable.
Vous pouvez passer le script en argument à l’interpréteur qui l’exécute — par exemple :
run: bash script.sh