Skip to main content

Cette version de GitHub Enterprise Server ne sera plus disponible le 2026-09-22. Les versions abandonnées ne sont pas prises en charge. Aucune publication de correctifs n’est effectuée, même pour les problèmes de sécurité critiques. Pour de meilleures performances, une sécurité améliorée et de nouvelles fonctionnalités dans GitHub Enterprise Server, consultez Overview du processus de mise à niveau. Pour obtenir de l’aide sur la mise à niveau, GitHub Support Entreprise.

Référence des contextes

Trouvez des informations sur les contextes disponibles dans GitHub Actions les flux de travail, notamment les propriétés disponibles, les méthodes d’accès et les exemples d’utilisation.

Contextes disponibles

Nom du contexteTypeDescription
githubobjectInformations sur l’exécution du workflow. Pour plus d’informations, voir Contexte github.
envobjectContient des variables définies dans un workflow, un travail ou une étape. Pour plus d’informations, voir Contexte env.
varsobjectContient les variables définies au niveau du dépôt, de l’organisation ou de l’environnement. Pour plus d’informations, voir Contexte vars.
jobobjectInformations sur le travail en cours d’exécution. Pour plus d’informations, voir Contexte job.
jobsobjectPour les workflows réutilisables uniquement, contient les sorties des travaux du workflow réutilisable. Pour plus d’informations, voir Contexte jobs.
stepsobjectInformations sur les étapes qui ont été exécutées dans le travail en cours. Pour plus d’informations, voir Contexte steps.
runnerobjectInformations sur l’exécuteur qui exécute le travail en cours. Pour plus d’informations, voir Contexte runner.
secretsobjectContient les noms et valeurs des secrets disponibles pour une exécution de workflow. Pour plus d’informations, voir Contexte secrets.
strategyobjectInformations sur la stratégie d’exécution de matrice pour le travail en cours. Pour plus d’informations, voir Contexte strategy.
matrixobjectContient les propriétés de matrice définies dans le workflow qui s’appliquent au travail en cours. Pour plus d’informations, voir Contexte matrix.
needsobjectContient les sorties de tous les travaux définis comme dépendance du travail en cours. Pour plus d’informations, voir Contexte needs.
inputsobjectContient les entrées d’un workflow réutilisable ou déclenché manuellement. Pour plus d’informations, voir Contexte inputs.

Dans le cadre d’une expression, vous pouvez accéder aux informations de contexte à l’aide d’une syntaxe parmi deux syntaxes au choix.

  • Syntaxe d’index : github['sha']
  • Syntaxe de déréférencement de propriété : github.sha

Pour permettre l’utilisation de la syntaxe de déréférencement de propriété, le nom de propriété doit commencer par une lettre ou _, et contenir uniquement des caractères alphanumériques, - ou _.

Si vous tentez de déréférencer une propriété inexistante, cela aboutit à une chaîne vide.

Déterminer quand utiliser des contextes

GitHub Actions inclut une collection de variables appelées contextes et une collection similaire de variables appelées variables par défaut. Ces variables sont destinées à être utilisées à différents stades du workflow.

  • Variables d’environnement par défaut : ces variables d’environnement existent uniquement sur l’exécuteur du travail. Pour plus d’informations, consultez « Références des variables ».
  • Contextes : vous pouvez utiliser la plupart des contextes à n’importe quel stade du workflow, notamment quand les variables par défaut ne sont pas disponibles. Par exemple, vous pouvez utiliser des contextes avec des expressions pour effectuer un traitement initial avant que le travail soit routé vers un exécuteur. Cela vous permet d’utiliser un contexte avec le mot clé conditionnel if pour déterminer si une étape doit être exécutée. Une fois le travail en cours d’exécution, vous pouvez également récupérer des variables de contexte à partir de l’exécuteur du travail, par exemple runner.os. Pour plus d’informations sur l’emplacement où vous pouvez utiliser divers contextes au sein d’un workflow, consultez Disponibilité du contexte.

L’exemple suivant montre comment ces différents types de variables peuvent être utilisés ensemble dans un travail :

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"

Dans cet exemple, l’instruction if vérifie le contexte github.ref pour déterminer le nom de la branche actuelle. Si le nom est refs/heads/main, les étapes suivantes sont exécutées. La if vérification est traitée par GitHub Actions, et le travail est envoyé uniquement à l’exécuteur si le résultat est true. Une fois le travail envoyé à l’exécuteur, l’étape est exécutée et référence la variable $GITHUB_REF de l’exécuteur.

Disponibilité du contexte

Différents contextes sont disponibles tout au long d’une exécution de workflow. Par exemple, le contexte secrets peut uniquement être utilisé à certains endroits au sein d’un travail.

De plus, certaines fonctions peuvent uniquement être utilisées à certains endroits. Par exemple, la fonction hashFiles n’est pas disponible partout.

Le tableau suivant répertorie les restrictions sur l’utilisation de chaque contexte et chaque fonction spéciale dans un workflow. Les contextes répertoriés sont disponibles uniquement pour la clé de workflow spécifiée et ne peuvent pas être utilisés ailleurs. Si elle n’est pas listée ci-dessous, une fonction peut être utilisée n’importe où.

Clé de workflowContexteFonctions spéciales
run-namegithub, inputs, varsNone
concurrencygithub, inputs, varsNone
envgithub, secrets, inputs, varsNone
jobs.<job_id>.concurrencygithub, needs, strategy, matrix, inputs, varsNone
jobs.<job_id>.containergithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.container.credentialsgithub, needs, strategy, matrix, env, vars, secrets, inputsNone
jobs.<job_id>.container.env.<env_id>github, needs, strategy, matrix, job, runner, env, vars, secrets, inputsNone
jobs.<job_id>.container.imagegithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.continue-on-errorgithub, needs, strategy, vars, matrix, inputsNone
jobs.<job_id>.defaults.rungithub, needs, strategy, matrix, env, vars, inputsNone
jobs.<job_id>.envgithub, needs, strategy, matrix, vars, secrets, inputsNone
jobs.<job_id>.environmentgithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.environment.urlgithub, needs, strategy, matrix, job, runner, env, vars, steps, inputsNone
jobs.<job_id>.ifgithub, needs, vars, inputsalways, cancelled, success, failure
jobs.<job_id>.namegithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.outputs.<output_id>github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputsNone
jobs.<job_id>.runs-ongithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.secrets.<secrets_id>github, needs, strategy, matrix, secrets, inputs, varsNone
jobs.<job_id>.servicesgithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.services.<service_id>.credentialsgithub, needs, strategy, matrix, env, vars, secrets, inputsNone
jobs.<job_id>.services.<service_id>.env.<env_id>github, needs, strategy, matrix, job, runner, env, vars, secrets, inputsNone
jobs.<job_id>.steps.continue-on-errorgithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.envgithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.ifgithub, needs, strategy, matrix, job, runner, env, vars, steps, inputsalways, cancelled, success, failure, hashFiles
jobs.<job_id>.steps.namegithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.rungithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.timeout-minutesgithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.withgithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.working-directorygithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.strategygithub, needs, vars, inputsNone
jobs.<job_id>.timeout-minutesgithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.with.<with_id>github, needs, strategy, matrix, inputs, varsNone
on.workflow_call.inputs.<inputs_id>.defaultgithub, inputs, varsNone
on.workflow_call.outputs.<output_id>.valuegithub, jobs, vars, inputsNone

Exemple : impression d’informations de contexte dans le journal

Vous pouvez imprimer le contenu des contextes dans le journal pour le débogage. La fonction toJSON est nécessaire pour l’impression élégante des objets JSON dans le journal.

Avertissement

Lorsque vous utilisez le contexte github entier, n’oubliez pas qu’il inclut des informations sensibles telles que github.token. GitHub masque les secrets lorsqu’ils sont imprimés sur la console, mais vous devez être prudent lors de l’exportation ou de l’impression du contexte.

YAML
name: Context testing
on: push

jobs:
  dump_contexts_to_log:
    runs-on: ubuntu-latest
    steps:
      - name: Dump GitHub context
        env:
          GITHUB_CONTEXT: ${{ toJson(github) }}
        run: echo "$GITHUB_CONTEXT"
      - name: Dump job context