Explorer les contextes et les expressions dans GitHub
Les contextes permettent d’accéder à des informations sur les exécutions de flux de travail, les variables, les environnements des runners, les jobs et les étapes.
Chaque contexte est un objet contenant des propriétés, qui peuvent être des chaînes de caractères ou d’autres objets.
Vous pouvez accéder aux contextes en utilisant la syntaxe des expressions. Une expression peut être une combinaison de valeurs littérales, de références à un contexte ou de fonctions. Vous pouvez combiner des littéraux, des références de contexte et des fonctions à l’aide d’opérateurs.
Contextes
Lorsque vous créez des workflows et des actions, vous devez toujours considérer la possibilité que votre code exécute des entrées non fiables provenant d’attaquants potentiels. Certains contextes doivent être traités comme des entrées non fiables, car un attaquant pourrait y insérer du contenu malveillant.
Pour plus d’informations, consultez la page Renforcement de la sécurité pour GitHub Actions.
Le tableau suivant contient des exemples de contextes disponibles dans GitHub, mais ce n’est pas une liste exhaustive.
Nom du contexte | Type | Description |
---|---|---|
github | objet | Informations sur l’exécution du flux de travail. |
env | objet | Contient les variables définies dans un flux de travail, un job ou une étape. |
vars | objet | Contient les variables définies au niveau du dépôt, de l’organisation ou de l’environnement. |
job | objet | Informations sur le job en cours d’exécution. |
💡 Astuce
Pour une liste complète des contextes, consultez la page À propos des contextes.
Déterminer quand utiliser les contextes
GitHub Actions inclut deux collections de variables : les variables d’environnement par défaut et les contextes. Ces variables sont destinées à être utilisées à différents moments dans le flux de travail :
- Variables d’environnement par défaut : Ces variables existent uniquement sur le runner qui exécute votre job.
- Contextes : Vous pouvez utiliser la plupart des contextes à n’importe quel moment dans votre flux de travail, y compris lorsque les variables par défaut ne sont pas disponibles.
Dans l’exemple suivant, l’instruction if
vérifie le contexte github.ref
pour déterminer le nom de la branche actuelle.
La condition if
est évaluée, et le job est envoyé au runner uniquement si le résultat est vrai.
Une fois le job envoyé au runner, l’étape est exécutée et fait référence à la variable $GITHUB_REF
disponible sur le runner.
name: CI
on: push
jobs:
prod-check:
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
steps:
- run: echo "Deploying to production server on branch $GITHUB_REF"
Contextes disponibles dans GitHub Actions
Le tableau suivant présente les contextes de niveau supérieur disponibles, une brève description, ainsi qu’un lien vers plus d’informations sur les propriétés de chaque objet.
Contexte de niveau supérieur | Description | Propriétés et exemples |
---|---|---|
github | Contexte de niveau supérieur disponible dans n’importe quel job ou étape d’un flux de travail. | Propriétés du contexte github |
env | Contient les variables définies dans un flux de travail, un job ou une étape. Ne contient pas les variables héritées du processus du runner. | Propriétés du contexte env |
vars | Contient les variables de configuration personnalisées définies au niveau de l’organisation, du dépôt ou de l’environnement. | Exemples d’utilisation de vars |
job | Contient des informations sur le job en cours d’exécution. | Propriétés du contexte job |
jobs | Disponible uniquement dans les workflows réutilisables, et utilisé uniquement pour définir des outputs. | Propriétés du contexte jobs |
steps | Contient des informations sur les étapes terminées dans le job actuel, à condition qu’un identifiant ait été spécifié. | Propriétés du contexte steps |
runner | Contient des informations sur le runner qui exécute le job actuel. | Propriétés du contexte runner |
secrets | Contient les noms et les valeurs des secrets disponibles pour une exécution de flux de travail. | Propriétés du contexte secrets |
strategy | Contient des informations sur la stratégie d’exécution matricielle du job actuel. | Propriétés du contexte strategy |
matrix | Contient les propriétés de la matrice définies dans le fichier de flux de travail et applicables au job actuel. | Propriétés du contexte matrix |
needs | Contient les outputs de tous les jobs définis comme dépendances directes du job actuel. | Propriétés du contexte needs |
inputs | Contient les propriétés d’entrée passées à une action, à un workflow réutilisable ou à un workflow déclenché manuellement. | Propriétés du contexte inputs |
Expressions
Vous pouvez utiliser des expressions pour définir des variables d’environnement de manière programmatique dans les fichiers de flux de travail et pour accéder aux contextes.
Une expression peut être une combinaison de valeurs littérales, de références à un contexte ou de fonctions. Vous pouvez combiner ces éléments à l’aide d’opérateurs.
Les expressions sont souvent utilisées avec le mot-clé conditionnel if
dans un fichier de flux de travail pour déterminer si une étape doit s’exécuter.
Lorsque la condition if
est vraie, l’étape est exécutée.
Pour que GitHub évalue une expression au lieu de la traiter comme une chaîne de caractères, vous devez utiliser la syntaxe spécifique :
YAML
${{ <expression> }}
Afficher plus de lignes
Exception : dans une clause if
, cette syntaxe peut généralement être omise.
env:
MY_ENV_VAR: ${{ <expression> }}
Littéraux
Dans une expression, vous pouvez utiliser les types de données suivants : booléen, null, nombre ou chaîne de caractères.
Dans les conditions, les valeurs dites falsy (false
, 0
, -0
, ""
, ''
, null
) sont converties en false
, tandis que les valeurs truthy (true
et toutes les autres valeurs non falsy) sont converties en true
.
Voici quelques exemples montrant comment implémenter des littéraux.
env:
myNull: ${{ null }}
myBoolean: ${{ false }}
myIntegerNumber: ${{ 711 }}
myFloatNumber: ${{ -9.2 }}
myHexNumber: ${{ 0xff }}
myExponentialNumber: ${{ -2.99e-2 }}
myString: Mona the Octocat
myStringInBraces: ${{ 'It''s open source!' }}
Opérateurs
Les opérateurs jouent un rôle essentiel dans l’évaluation des expressions. Une expression peut être composée de valeurs littérales, de références à des contextes ou de fonctions. Les opérateurs permettent de combiner ces éléments pour créer des expressions plus complexes.
Voici quelques opérateurs clés :
Opérateurs logiques :
&&
(et) : Combine deux conditions ; les deux doivent être vraies pour que l’expression soit évaluée comme vraie.||
(ou) : Combine deux conditions ; l’expression est vraie si l’une des deux conditions est vraie.!
(non) : Négation d’une condition ; inverse sa valeur de vérité.
Opérateurs d’égalité :
==
(égal) : Compare deux valeurs pour vérifier leur égalité.!=
(différent) : Vérifie si deux valeurs ne sont pas égales.
Opérateurs de comparaison :
<
(inférieur à)>
(supérieur à)<=
(inférieur ou égal à)>=
(supérieur ou égal à)
Ces opérateurs permettent de créer des workflows dynamiques, en déterminant si certaines étapes doivent s’exécuter selon des conditions.
N’oubliez pas d’utiliser la syntaxe correcte pour les expressions, comme :
${{ <expression> }}
Cela indique à GitHub qu’il doit évaluer l’expression plutôt que de la traiter comme une simple chaîne de caractères.
Exception : dans une clause if
, vous pouvez généralement omettre les délimiteurs ${{ }}
.