Tech Hub

@ Solution Architecture Works

Automatiser les tests de charge Azure en utilisant GitHub

Explorer les contextes et les expressions dans GitHub

Temps estimé :7 minutes 79 vues

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 contexteTypeDescription
githubobjetInformations sur l’exécution du flux de travail.
envobjetContient les variables définies dans un flux de travail, un job ou une étape.
varsobjetContient les variables définies au niveau du dépôt, de l’organisation ou de l’environnement.
jobobjetInformations 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.

YAML
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érieurDescriptionPropriétés et exemples
githubContexte de niveau supérieur disponible dans n’importe quel job ou étape d’un flux de travail.Propriétés du contexte github
envContient 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
varsContient 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
jobContient des informations sur le job en cours d’exécution.Propriétés du contexte job
jobsDisponible uniquement dans les workflows réutilisables, et utilisé uniquement pour définir des outputs.Propriétés du contexte jobs
stepsContient 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
runnerContient des informations sur le runner qui exécute le job actuel.Propriétés du contexte runner
secretsContient les noms et les valeurs des secrets disponibles pour une exécution de flux de travail.Propriétés du contexte secrets
strategyContient des informations sur la stratégie d’exécution matricielle du job actuel.Propriétés du contexte strategy
matrixContient 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
needsContient les outputs de tous les jobs définis comme dépendances directes du job actuel.Propriétés du contexte needs
inputsContient 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.

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

YAML
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 :

YAML
${{ <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 ${{ }}.

Share this Doc

Explorer les contextes et les expressions dans GitHub

Or copy link

CONTENTS