Skip to main content

Workflow commands for GitHub Actions

Vous pouvez utiliser des commandes de workflow quand vous exĂ©cutez des commandes d’interprĂ©teur de commandes dans un workflow ou dans le code d’une action.

Tool navigation

À propos des commandes de workflow

Les actions peuvent communiquer avec la machine de l’exĂ©cuteur pour dĂ©finir des variables d’environnement, gĂ©nĂ©rer des valeurs utilisĂ©es par d’autres actions, ajouter des messages de dĂ©bogage aux journaux de sortie, entre autres tĂąches.

La plupart des commandes de workflow utilisent la commande echo dans un format spĂ©cifique, tandis que d’autres sont appelĂ©es en Ă©crivant dans un fichier. Pour plus d’informations, consultez Fichiers d’environnement.

Exemple de commande de workflow

Bash
echo "::workflow-command parameter1={data},parameter2={data}::{command value}"
PowerShell
Write-Output "::workflow-command parameter1={data},parameter2={data}::{command value}"

Remarque

Les noms des commandes et des paramĂštres du flux de travail ne sont pas sensibles Ă  la casse.

Avertissement

Si vous utilisez l’invite de commandes, omettez les guillemets doubles (") lors de l’utilisation de commandes de workflow.

Utilisation de commandes de workflow pour accéder aux fonctions du kit de ressources

Les actions/le kit de ressources incluent un certain nombre de fonctions qui peuvent ĂȘtre exĂ©cutĂ©es en tant que commandes de workflow. Utilisez la syntaxe :: pour exĂ©cuter les commandes de workflow dans votre fichier YAML. Ces commandes sont ensuite envoyĂ©es Ă  l’exĂ©cuteur via stdout.

Par exemple, au lieu d’utiliser du code pour crĂ©er une annotation d’erreur, comme indiquĂ© ci-dessous :

JavaScript
core.error('Missing semicolon', {file: 'app.js', startLine: 1})

Exemple : CrĂ©ation d’une annotation pour une erreur

Vous pouvez utiliser la commande error dans votre workflow pour crĂ©er la mĂȘme annotation d’erreur :

YAML
      - name: Create annotation for build error
        run: echo "::error file=app.js,line=1::Missing semicolon"
YAML
      - name: Create annotation for build error
        run: Write-Output "::error file=app.js,line=1::Missing semicolon"

Le tableau suivant montre quelles fonctions du kit de ressources sont disponibles dans un workflow :

Fonction du kit de ressourcesCommande de workflow équivalente
core.addPathAccessible à l’aide du fichier d’environnement GITHUB_PATH
core.debugdebug
core.noticenotice
core.errorerror
core.endGroupendgroup
core.exportVariableAccessible à l’aide du fichier d’environnement GITHUB_ENV
core.getInputAccessible à l’aide de la variable d’environnement INPUT_{NAME}
core.getStateAccessible à l’aide de la variable d’environnement STATE_{NAME}
core.isDebugAccessible à l’aide de la variable d’environnement RUNNER_DEBUG
core.summaryAccessible à l’aide du fichier d’environnement GITHUB_STEP_SUMMARY
core.saveStateAccessible à l’aide du fichier d’environnement GITHUB_STATE
core.setCommandEchoecho
core.setFailedUtilisé comme raccourci pour ::error et exit 1
core.setOutputAccessible à l’aide du fichier d’environnement GITHUB_OUTPUT
core.setSecretadd-mask
core.startGroupgroup
core.warningwarning

DĂ©finition d’un message de dĂ©bogage

Imprime un message de dĂ©bogage dans le journal. Vous devez crĂ©er un secret nommĂ© ACTIONS_STEP_DEBUG avec la valeur true pour afficher les messages de dĂ©bogage dĂ©finis par cette commande dans le journal. Pour plus d’informations, consultez « Enabling debug logging Â».

Text
::debug::{message}

Exemple : DĂ©finition d’un message de dĂ©bogage

Bash
echo "::debug::Set the Octocat variable"
PowerShell
Write-Output "::debug::Set the Octocat variable"

DĂ©finition d’un message de notification

CrĂ©e un message de notification et l’imprime dans le journal. Ce message crĂ©e une annotation, qui peut associer le message Ă  un fichier particulier de votre dĂ©pĂŽt. Votre message peut Ă©ventuellement spĂ©cifier une position dans le fichier.

Text
::notice file={name},line={line},endLine={endLine},title={title}::{message}
ParamÚtreValeurRequisPar défaut
titleTitre personnaliséNonAucun(e)
fileNom du fichierNon.github
colNumĂ©ro de colonne, Ă  partir de 1NonAucun(e)
endColumnNuméro de colonne de finNonAucun(e)
lineNumĂ©ro de ligne, Ă  partir de 1Non1
endLineNuméro de ligne de finNon1

Exemple : DĂ©finition d’un message de notification

Bash
echo "::notice file=app.js,line=1,col=5,endColumn=7::Missing semicolon"
PowerShell
Write-Output "::notice file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"

DĂ©finition d’un message d’avertissement

CrĂ©e un message d’avertissement et l’imprime dans le journal. Ce message crĂ©e une annotation, qui peut associer le message Ă  un fichier particulier de votre dĂ©pĂŽt. Votre message peut Ă©ventuellement spĂ©cifier une position dans le fichier.

Text
::warning file={name},line={line},endLine={endLine},title={title}::{message}
ParamÚtreValeurRequisPar défaut
titleTitre personnaliséNonAucun(e)
fileNom du fichierNon.github
colNumĂ©ro de colonne, Ă  partir de 1NonAucun(e)
endColumnNuméro de colonne de finNonAucun(e)
lineNumĂ©ro de ligne, Ă  partir de 1Non1
endLineNuméro de ligne de finNon1

Exemple : DĂ©finition d’un message d’avertissement

Bash
echo "::warning file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"
PowerShell
Write-Output "::warning file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"

DĂ©finition d’un message d’erreur

CrĂ©e un message d’erreur et l’imprime dans le journal. Ce message crĂ©e une annotation, qui peut associer le message Ă  un fichier particulier de votre dĂ©pĂŽt. Votre message peut Ă©ventuellement spĂ©cifier une position dans le fichier.

Text
::error file={name},line={line},endLine={endLine},title={title}::{message}
ParamÚtreValeurRequisPar défaut
titleTitre personnaliséNonAucun(e)
fileNom du fichierNon.github
colNumĂ©ro de colonne, Ă  partir de 1NonAucun(e)
endColumnNuméro de colonne de finNonAucun(e)
lineNumĂ©ro de ligne, Ă  partir de 1Non1
endLineNuméro de ligne de finNon1

Exemple : DĂ©finition d’un message d’erreur

Bash
echo "::error file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"
PowerShell
Write-Output "::error file=app.js,line=1,col=5,endColumn=7,title=YOUR-TITLE::Missing semicolon"

Regroupement de lignes de journal

Crée un groupe extensible dans le journal. Pour créer un groupe, utilisez la commande group et spécifiez un titre (title). Tout ce que vous imprimez dans le journal entre les commandes group et endgroup est imbriqué dans une entrée extensible dans le journal.

Text
::group::{title}
::endgroup::

Exemple : Regroupement de lignes de journal

YAML
jobs:
  bash-example:
    runs-on: ubuntu-latest
    steps:
      - name: Group of log lines
        run: |
            echo "::group::My title"
            echo "Inside group"
            echo "::endgroup::"
YAML
jobs:
  powershell-example:
    runs-on: windows-latest
    steps:
      - name: Group of log lines
        run: |
            Write-Output "::group::My title"
            Write-Output "Inside group"
            Write-Output "::endgroup::"

Capture d’écran du journal de l’étape de workflow. La deuxiĂšme ligne, « Mon titre », est un groupe Ă©largi. La ligne suivante, « Dans le groupe Â», est mise en retrait ci-dessous.

Masquage d’une valeur dans un journal

Text
::add-mask::{value}

Le masquage d’une valeur empĂȘche l’impression d’une chaĂźne ou d’une variable dans le journal. Chaque mot masquĂ© sĂ©parĂ© par des espaces blancs est remplacĂ© par le caractĂšre *. Vous pouvez utiliser une variable d’environnement ou une chaĂźne pour la valeur (value) du masque. Lorsque vous masquez une valeur, elle est traitĂ©e comme un secret et est Ă©ditĂ©e sur l’exĂ©cuteur. Par exemple, aprĂšs avoir masquĂ© une valeur, vous ne pouvez pas dĂ©finir cette valeur en tant que sortie.

Exemple : Masquage d’une chaĂźne

Lorsque vous imprimez "Mona The Octocat" dans le journal, vous voyez "***".

Bash
echo "::add-mask::Mona The Octocat"
PowerShell
Write-Output "::add-mask::Mona The Octocat"

Avertissement

Veillez Ă  inscrire le secret avec « add-mask Â» avant de l’afficher dans les journaux de gĂ©nĂ©ration ou de l’utiliser dans les autres commandes de workflow.

Exemple : Masquage d’une variable d’environnement

Lorsque vous imprimez la variable MY_NAME ou la valeur "Mona The Octocat" dans le journal, vous voyez "***" au lieu de "Mona The Octocat".

YAML
jobs:
  bash-example:
    runs-on: ubuntu-latest
    env:
      MY_NAME: "Mona The Octocat"
    steps:
      - name: bash-version
        run: echo "::add-mask::$MY_NAME"
YAML
jobs:
  powershell-example:
    runs-on: windows-latest
    env:
      MY_NAME: "Mona The Octocat"
    steps:
      - name: powershell-version
        run: Write-Output "::add-mask::$env:MY_NAME"

Exemple : Masquage d’une sortie gĂ©nĂ©rĂ©e au sein d’un seul travail

Si vous n’avez pas besoin de passer votre secret d’un travail Ă  un autre, vous pouvez :

  1. Générer le secret (sans le sortir).
  2. Le masquer avec add-mask.
  3. Utiliser GITHUB_OUTPUT pour rendre le secret disponible pour d’autres Ă©tapes du travail.
YAML
on: push
jobs:
  generate-a-secret-output:
    runs-on: ubuntu-latest
    steps:
      - id: sets-a-secret
        name: Generate, mask, and output a secret
        run: |
          the_secret=$((RANDOM))
          echo "::add-mask::$the_secret"
          echo "secret-number=$the_secret" >> "$GITHUB_OUTPUT"
      - name: Use that secret output (protected by a mask)
        run: |
          echo "the secret number is ${{ steps.sets-a-secret.outputs.secret-number }}"
YAML
on: push
jobs:
  generate-a-secret-output:
    runs-on: ubuntu-latest
    steps:
      - id: sets-a-secret
        name: Generate, mask, and output a secret
        shell: pwsh
        run: |
          Set-Variable -Name TheSecret -Value (Get-Random)
          Write-Output "::add-mask::$TheSecret"
          "secret-number=$TheSecret" >> $env:GITHUB_OUTPUT
      - name: Use that secret output (protected by a mask)
        shell: pwsh
        run: |
          Write-Output "the secret number is ${{ steps.sets-a-secret.outputs.secret-number }}"

Exemple : Masquage et passage d’un secret entre des travaux ou des workflows

Si vous souhaitez passer un secret masqué entre des travaux ou des workflows, vous devez stocker le secret dans un magasin, puis le récupérer dans le travail ou le workflow suivant.

Programme d’installation

  1. Configurez un magasin de secrets pour stocker le secret que vous allez générer pendant votre workflow. Par exemple, Vault.
  2. GĂ©nĂ©rez une clĂ© pour la lecture et l’écriture dans ce magasin de secrets. Stockez la clĂ© en tant que secret de dĂ©pĂŽt. Dans l’exemple de workflow suivant, le nom du secret est SECRET_STORE_CREDENTIALS. Pour plus d’informations, consultez « Utilisation de secrets dans GitHub Actions Â».

Workflow

Remarque

Ce flux de travail utilise un magasin de secrets imaginaire, secret-store, qui a des commandes imaginaires, store-secret et retrieve-secret. some/secret-store@ 27b31702a0e7fc50959f5ad993c78deac1bdfc29 est une action imaginaire qui installe l’application secret-store et la configure pour qu’elle se connecte à une instance avec des credentials.

YAML
on: push

jobs:
  secret-generator:
    runs-on: ubuntu-latest
    outputs:
      handle: ${{ steps.generate-secret.outputs.handle }}
    steps:
    - uses: some/secret-store@27b31702a0e7fc50959f5ad993c78deac1bdfc29
      with:
        credentials: ${{ secrets.SECRET_STORE_CREDENTIALS }}
        instance: ${{ secrets.SECRET_STORE_INSTANCE }}
    - name: generate secret
      id: generate-secret
      shell: bash
      run: |
        GENERATED_SECRET=$((RANDOM))
        echo "::add-mask::$GENERATED_SECRET"
        SECRET_HANDLE=$(secret-store store-secret "$GENERATED_SECRET")
        echo "handle=$SECRET_HANDLE" >> "$GITHUB_OUTPUT"
  secret-consumer:
    runs-on: macos-latest
    needs: secret-generator
    steps:
    - uses: some/secret-store@27b31702a0e7fc50959f5ad993c78deac1bdfc29
      with:
        credentials: ${{ secrets.SECRET_STORE_CREDENTIALS }}
        instance: ${{ secrets.SECRET_STORE_INSTANCE }}
    - name: use secret
      shell: bash
      run: |
        SECRET_HANDLE="${{ needs.secret-generator.outputs.handle }}"
        RETRIEVED_SECRET=$(secret-store retrieve-secret "$SECRET_HANDLE")
        echo "::add-mask::$RETRIEVED_SECRET"
        echo "We retrieved our masked secret: $RETRIEVED_SECRET"
YAML
on: push

jobs:
  secret-generator:
    runs-on: ubuntu-latest
    steps:
    - uses: some/secret-store@27b31702a0e7fc50959f5ad993c78deac1bdfc29
      with:
        credentials: ${{ secrets.SECRET_STORE_CREDENTIALS }}
        instance: ${{ secrets.SECRET_STORE_INSTANCE }}
    - name: generate secret
      shell: pwsh
      run: |
        Set-Variable -Name Generated_Secret -Value (Get-Random)
        Write-Output "::add-mask::$Generated_Secret"
        Set-Variable -Name Secret_Handle -Value (Store-Secret "$Generated_Secret")
        "handle=$Secret_Handle" >> $env:GITHUB_OUTPUT
  secret-consumer:
    runs-on: macos-latest
    needs: secret-generator
    steps:
    - uses: some/secret-store@27b31702a0e7fc50959f5ad993c78deac1bdfc29
      with:
        credentials: ${{ secrets.SECRET_STORE_CREDENTIALS }}
        instance: ${{ secrets.SECRET_STORE_INSTANCE }}
    - name: use secret
      shell: pwsh
      run: |
        Set-Variable -Name Secret_Handle -Value "${{ needs.secret-generator.outputs.handle }}"
        Set-Variable -Name Retrieved_Secret -Value (Retrieve-Secret "$Secret_Handle")
        echo "::add-mask::$Retrieved_Secret"
        echo "We retrieved our masked secret: $Retrieved_Secret"

ArrĂȘt et dĂ©marrage de commandes de workflow

ArrĂȘte le traitement de toutes les commandes de workflow. Cette commande spĂ©ciale vous permet de tout journaliser sans exĂ©cuter accidentellement une commande de workflow. Par exemple, vous pouvez arrĂȘter la journalisation pour gĂ©nĂ©rer l’intĂ©gralitĂ© d’un script contenant des commentaires.

Text
::stop-commands::{endtoken}

Pour arrĂȘter le traitement des commandes de workflow, passez un jeton unique Ă  stop-commands. Pour reprendre le traitement des commandes de workflow, passez le mĂȘme jeton que celui que vous avez utilisĂ© pour arrĂȘter les commandes de workflow.

Avertissement

Assurez-vous que le jeton que vous utilisez est gĂ©nĂ©rĂ© de maniĂšre alĂ©atoire et qu’il est unique pour chaque exĂ©cution.

Text
::{endtoken}::

Exemple : ArrĂȘt et dĂ©marrage de commandes de workflow

YAML
jobs:
  workflow-command-job:
    runs-on: ubuntu-latest
    steps:
      - name: Disable workflow commands
        run: |
          echo '::warning:: This is a warning message, to demonstrate that commands are being processed.'
          stopMarker=$(uuidgen)
          echo "::stop-commands::$stopMarker"
          echo '::warning:: This will NOT be rendered as a warning, because stop-commands has been invoked.'
          echo "::$stopMarker::"
          echo '::warning:: This is a warning again, because stop-commands has been turned off.'
YAML
jobs:
  workflow-command-job:
    runs-on: windows-latest
    steps:
      - name: Disable workflow commands
        run: |
          Write-Output '::warning:: This is a warning message, to demonstrate that commands are being processed.'
          $stopMarker = New-Guid
          Write-Output "::stop-commands::$stopMarker"
          Write-Output '::warning:: This will NOT be rendered as a warning, because stop-commands has been invoked.'
          Write-Output "::$stopMarker::"
          Write-Output '::warning:: This is a warning again, because stop-commands has been turned off.'

Envoi de valeurs aux actions de préalables (pre) et ultérieures (post)

Vous pouvez crĂ©er des variables d'environnement Ă  partager avec les actions pre: ou post: de votre flux de travail en Ă©crivant dans le fichier situĂ© Ă  l'adresse GITHUB_STATE. Par exemple, vous pouvez crĂ©er un fichier avec l’action pre:, passer l’emplacement du fichier Ă  l’action main:, puis utiliser l’action post: pour supprimer le fichier. Vous pouvez Ă©galement crĂ©er un fichier avec l’action main:, passer l’emplacement du fichier Ă  l’action post:, puis Ă©galement utiliser l’action post: pour supprimer le fichier.

Si vous avez plusieurs actions pre: ou post:, vous ne pouvez accĂ©der Ă  la valeur sauvegardĂ©e que dans l'action oĂč elle a Ă©tĂ© Ă©crite dans GITHUB_STATE. Pour plus d’informations sur l’action post:, consultez « RĂ©fĂ©rence syntaxique des mĂ©tadonnĂ©es Â».

Le fichier GITHUB_STATE est disponible uniquement dans une action. La valeur enregistrĂ©e est stockĂ©e en tant que valeur d’environnement avec le prĂ©fixe STATE_.

Cet exemple utilise JavaScript pour Ă©crire dans le fichier GITHUB_STATE. La variable d’environnement obtenue est nommĂ©e STATE_processID avec la valeur 12345 :

JavaScript
import * as fs from 'fs'
import * as os from 'os'

fs.appendFileSync(process.env.GITHUB_STATE, `processID=12345${os.EOL}`, {
  encoding: 'utf8'
})

La variable STATE_processID est ensuite disponible exclusivement pour le script de nettoyage s’exĂ©cutant sous l’action main. Cet exemple s’exĂ©cute dans main et utilise JavaScript pour afficher la valeur affectĂ©e Ă  la variable d’environnement STATE_processID :

JavaScript
console.log("The running PID from the main action is: " + process.env.STATE_processID);

Fichiers d’environnement

Pendant l’exĂ©cution d’un workflow, l’exĂ©cuteur gĂ©nĂšre des fichiers temporaires qui peuvent ĂȘtre utilisĂ©s pour effectuer certaines actions. Le chemin d’accĂšs Ă  ces fichiers peut ĂȘtre consultĂ© et modifiĂ© Ă  l’aide des variables d’environnement par dĂ©faut de GitHub. Consultez RĂ©fĂ©rences des variables. Vous devez utiliser l’encodage UTF-8 lors de l’écriture dans ces fichiers pour garantir le traitement appropriĂ© des commandes. Plusieurs commandes peuvent ĂȘtre Ă©crites dans le mĂȘme fichier, sĂ©parĂ©es par des sauts de ligne. Pour utiliser des variables d’environnement dans une action GitHub, vous crĂ©ez ou modifiez des fichiers .env Ă  l’aide de commandes GitHub Actions spĂ©cifiques.

Voici comment procĂ©der :

YAML
name: Example Workflow for Environment Files

on: push

jobs:
  set_and_use_env_vars:
    runs-on: ubuntu-latest
    steps:
      - name: Set environment variable
        run: echo "MY_ENV_VAR=myValue" >> $GITHUB_ENV

      - name: Use environment variable
        run: |
          echo "The value of MY_ENV_VAR is $MY_ENV_VAR"

Un autre exemple serait de l’utiliser pour stocker des mĂ©tadonnĂ©es telles que des horodatages de build, des SHA de commits ou des noms d’artefacts :

YAML
steps:
  - name: Store build timestamp
    run: echo "BUILD_TIME=$(date +'%T')" >> $GITHUB_ENV

  - name: Deploy using stored timestamp
    run: echo "Deploying at $BUILD_TIME"

Remarque

Les versions 5.1 et antĂ©rieures de PowerShell (shell: powershell) n’utilisent pas UTF-8 par dĂ©faut. Vous devez donc spĂ©cifier l’encodage UTF-8. Par exemple :

YAML
jobs:
  legacy-powershell-example:
    runs-on: windows-latest
    steps:
      - shell: powershell
        run: |
          "mypath" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append

PowerShell Core versions 6 et ultĂ©rieures (shell: pwsh) utilisent UTF-8 par dĂ©faut. Par exemple :

YAML
jobs:
  powershell-core-example:
    runs-on: windows-latest
    steps:
      - shell: pwsh
        run: |
          "mypath" >> $env:GITHUB_PATH

DĂ©finition d’une variable d’environnement

Remarque

Pour Ă©viter les problĂšmes, il est recommandĂ© de traiter les variables d’environnement comme sensibles Ă  la casse, quel que soit le comportement du systĂšme d’exploitation et de l’interprĂ©teur de commandes que vous utilisez.

Bash
echo "{environment_variable_name}={value}" >> "$GITHUB_ENV"
  • Utilisation de PowerShell version 6 et ultĂ©rieures :

    PowerShell
    "{environment_variable_name}={value}" >> $env:GITHUB_ENV
    
  • Utilisation de PowerShell version 5.1 et antĂ©rieures :

    PowerShell
    "{environment_variable_name}={value}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
    

Vous pouvez rendre une variable d’environnement disponible pour toutes les Ă©tapes suivantes d’un travail de workflow en dĂ©finissant ou en mettant Ă  jour la variable d’environnement, puis en Ă©crivant ceci dans le fichier d’environnement GITHUB_ENV. L’étape qui crĂ©e ou met Ă  jour la variable d’environnement n’a pas accĂšs Ă  la nouvelle valeur, mais toutes les Ă©tapes suivantes d’un travail y ont accĂšs.

Vous ne pouvez pas remplacer la valeur des variables d’environnement par dĂ©faut appelĂ©es GITHUB_* et RUNNER_*. Actuellement, vous pouvez remplacer la valeur de la variable CI. Toutefois, il n’est pas garanti que cela sera toujours possible. Pour plus d’informations sur les variables d’environnement par dĂ©faut, consultez « Stocker des informations dans des variables Â».

Remarque

En raison de restrictions de sĂ©curitĂ©, GITHUB_ENV ne peut pas ĂȘtre utilisĂ© pour dĂ©finir la variable d'environnement NODE_OPTIONS.

Exemple d’écriture d’une variable d’environnement dans GITHUB_ENV

YAML
steps:
  - name: Set the value
    id: step_one
    run: |
      echo "action_state=yellow" >> "$GITHUB_ENV"
  - name: Use the value
    id: step_two
    run: |
      printf '%s\n' "$action_state" # This will output 'yellow'
YAML
steps:
  - name: Set the value
    id: step_one
    run: |
      "action_state=yellow" >> $env:GITHUB_ENV
  - name: Use the value
    id: step_two
    run: |
      Write-Output "$env:action_state" # This will output 'yellow'

ChaĂźnes multilignes

Pour les chaßnes multilignes, vous pouvez utiliser un délimiteur avec la syntaxe suivante.

Text
{name}<<{delimiter}
{value}
{delimiter}

Avertissement

Assurez-vous que le dĂ©limiteur que vous utilisez ne se trouve pas sur une ligne Ă  part dans la valeur. Si la valeur est complĂštement arbitraire, vous ne devez pas utiliser ce format. Écrivez plutĂŽt la valeur dans un fichier.

Exemple d’une chaüne multiligne

Cet exemple utilise EOF comme dĂ©limiteur et dĂ©finit la variable d’environnement JSON_RESPONSE sur la valeur de la rĂ©ponse curl.

YAML
steps:
  - name: Set the value in bash
    id: step_one
    run: |
      {
        echo 'JSON_RESPONSE<<EOF'
        curl https://example.com
        echo EOF
      } >> "$GITHUB_ENV"
YAML
steps:
  - name: Set the value in pwsh
    id: step_one
    run: |
      $EOF = (New-Guid).Guid
      "JSON_RESPONSE<<$EOF" >> $env:GITHUB_ENV
      (Invoke-WebRequest -Uri "https://example.com").Content >> $env:GITHUB_ENV
      "$EOF" >> $env:GITHUB_ENV
    shell: pwsh

DĂ©finition d’un paramĂštre de sortie

DĂ©finit le paramĂštre de sortie d’une Ă©tape. Notez que l’étape a besoin d’un id pour ĂȘtre dĂ©finie afin de rĂ©cupĂ©rer ensuite la valeur de sortie. Vous pouvez dĂ©finir des valeurs de sortie multilignes en utilisant la mĂȘme technique que celle utilisĂ©e dans la section ChaĂźnes multilignes pour dĂ©finir des variables d'environnement multilignes.

Bash
echo "{name}={value}" >> "$GITHUB_OUTPUT"
PowerShell
"{name}=value" >> $env:GITHUB_OUTPUT

Exemple de dĂ©finition d’un paramĂštre de sortie

Cet exemple montre comment dĂ©finir le paramĂštre de sortie SELECTED_COLOR pour le rĂ©cupĂ©rer par la suite :

YAML
      - name: Set color
        id: color-selector
        run: echo "SELECTED_COLOR=green" >> "$GITHUB_OUTPUT"
      - name: Get color
        env:
          SELECTED_COLOR: ${{ steps.color-selector.outputs.SELECTED_COLOR }}
        run: echo "The selected color is $SELECTED_COLOR"

Cet exemple montre comment dĂ©finir le paramĂštre de sortie SELECTED_COLOR pour le rĂ©cupĂ©rer par la suite :

YAML
      - name: Set color
        id: color-selector
        run: |
            "SELECTED_COLOR=green" >> $env:GITHUB_OUTPUT
      - name: Get color
        env:
          SELECTED_COLOR: ${{ steps.color-selector.outputs.SELECTED_COLOR }}
        run: Write-Output "The selected color is $env:SELECTED_COLOR"

Ajout d’un rĂ©sumĂ© de travail

Bash
echo "{markdown content}" >> $GITHUB_STEP_SUMMARY
PowerShell
"{markdown content}" >> $env:GITHUB_STEP_SUMMARY

Vous pouvez dĂ©finir un Markdown personnalisĂ© pour chaque travail afin qu’il s’affiche sur la page RĂ©sumĂ© d’une exĂ©cution de workflow. Vous pouvez utiliser des rĂ©sumĂ©s de travaux pour afficher et regrouper du contenu unique, tel que des rĂ©sumĂ©s de rĂ©sultats de test, afin qu’un utilisateur qui affiche le rĂ©sultat d’une exĂ©cution de workflow n’ait pas besoin d’accĂ©der aux journaux pour voir des informations importantes relatives Ă  l’exĂ©cution, telles que les dĂ©faillances.

Les rĂ©sumĂ©s de travaux prennent en charge Markdown adaptĂ© GitHub et vous pouvez ajouter votre contenu Markdown pour une Ă©tape au fichier d’environnement GITHUB_STEP_SUMMARY. GITHUB_STEP_SUMMARY est unique pour chaque Ă©tape d’un travail. Pour plus d’informations sur le fichier par Ă©tape auquel GITHUB_STEP_SUMMARY fait rĂ©fĂ©rence, consultez « Fichiers d’environnement ».

Lorsqu’un travail se termine, les rĂ©sumĂ©s de toutes les Ă©tapes d’un travail sont regroupĂ©s dans un rĂ©sumĂ© de travail unique et sont affichĂ©s sur la page rĂ©sumĂ© de l’exĂ©cution du workflow. Si plusieurs travaux gĂ©nĂšrent des rĂ©sumĂ©s, les rĂ©sumĂ©s des travaux sont classĂ©s par heure d’achĂšvement du travail.

Exemple d’ajout d’un rĂ©sumĂ© de travail

Bash
echo "### Hello world! :rocket:" >> $GITHUB_STEP_SUMMARY
PowerShell
"### Hello world! :rocket:" >> $env:GITHUB_STEP_SUMMARY

Capture d’écran de la page de rĂ©sumĂ© d’une exĂ©cution de workflow. Sous « Exemple de rĂ©sumĂ© Â», vous voyez « Hello world! Â» et un emoji de fusĂ©e.

Contenu Markdown multiligne

Pour le contenu Markdown multiligne, vous pouvez utiliser >> pour ajouter en continu du contenu pour l’étape actuelle. Avec chaque opĂ©ration d’ajout, un caractĂšre de nouvelle ligne est automatiquement ajoutĂ©.

Exemple de contenu Markdown multiligne

- name: Generate list using Markdown
  run: |
    echo "This is the lead in sentence for the list" >> $GITHUB_STEP_SUMMARY
    echo "" >> $GITHUB_STEP_SUMMARY # this is a blank line
    echo "- Lets add a bullet point" >> $GITHUB_STEP_SUMMARY
    echo "- Lets add a second bullet point" >> $GITHUB_STEP_SUMMARY
    echo "- How about a third one?" >> $GITHUB_STEP_SUMMARY
- name: Generate list using Markdown
  run: |
    "This is the lead in sentence for the list" >> $env:GITHUB_STEP_SUMMARY
    "" >> $env:GITHUB_STEP_SUMMARY # this is a blank line
    "- Lets add a bullet point" >> $env:GITHUB_STEP_SUMMARY
    "- Lets add a second bullet point" >> $env:GITHUB_STEP_SUMMARY
    "- How about a third one?" >> $env:GITHUB_STEP_SUMMARY

Remplacement de résumés des travaux

Pour effacer tout le contenu de l’étape actuelle, vous pouvez utiliser > pour remplacer tout contenu prĂ©cĂ©demment ajoutĂ© dans Bash, ou supprimez -Append dans PowerShell.

Exemple de remplacement de résumés de travaux

- name: Overwrite Markdown
  run: |
    echo "Adding some Markdown content" >> $GITHUB_STEP_SUMMARY
    echo "There was an error, we need to clear the previous Markdown with some new content." > $GITHUB_STEP_SUMMARY
- name: Overwrite Markdown
  run: |
    "Adding some Markdown content" >> $env:GITHUB_STEP_SUMMARY
    "There was an error, we need to clear the previous Markdown with some new content." >> $env:GITHUB_STEP_SUMMARY

Suppression de résumés de travaux

Pour supprimer complĂštement un rĂ©sumĂ© de l’étape actuelle, le fichier auquel GITHUB_STEP_SUMMARY fait rĂ©fĂ©rence peut ĂȘtre supprimĂ©.

Exemple de suppression de résumés de travaux

- name: Delete all summary content
  run: |
    echo "Adding Markdown content that we want to remove before the step ends" >> $GITHUB_STEP_SUMMARY
    rm $GITHUB_STEP_SUMMARY
- name: Delete all summary content
  run: |
    "Adding Markdown content that we want to remove before the step ends" >> $env:GITHUB_STEP_SUMMARY
    Remove-Item $env:GITHUB_STEP_SUMMARY

Une fois l’étape terminĂ©e, les rĂ©sumĂ©s des travaux sont chargĂ©s et les Ă©tapes suivantes ne peuvent pas modifier le contenu Markdown prĂ©cĂ©demment chargĂ©. Les rĂ©sumĂ©s masquent automatiquement les secrets qui peuvent avoir Ă©tĂ© ajoutĂ©s accidentellement. Si un rĂ©sumĂ© de travail contient des informations sensibles qui doivent ĂȘtre supprimĂ©es, vous pouvez supprimer l’exĂ©cution entiĂšre du workflow pour supprimer tous ses rĂ©sumĂ©s de travaux. Pour plus d’informations, consultez « Suppression d’une exĂ©cution de workflow Â».

Isolation et limites des étapes

Les rĂ©sumĂ©s de travaux sont isolĂ©s entre les Ă©tapes et chaque Ă©tape est limitĂ©e Ă  une taille maximale de 1MiB. L’isolation est appliquĂ©e entre les Ă©tapes afin que Markdown potentiellement mal formĂ© Ă  partir d’une seule Ă©tape ne puisse pas interrompre le rendu Markdown pour les Ă©tapes suivantes. Si plus de 1MiB de contenu est ajoutĂ© pour une Ă©tape, le chargement de l’étape Ă©choue et une annotation d’erreur est créée. TĂ©lĂ©charger des dĂ©faillances de rĂ©sumĂ©s des travaux n’affecte pas l’état global d’une Ă©tape ou d’un travail. Un maximum de 20 rĂ©sumĂ©s de travaux Ă  partir des Ă©tapes s’affichent par travail.

Ajout d’un chemin systùme

Ajoute un rĂ©pertoire Ă  la variable systĂšme PATH et le rend automatiquement disponible pour toutes les actions suivantes dans le travail actuel. L’action en cours d’exĂ©cution ne peut pas accĂ©der Ă  la variable de chemin mise Ă  jour. Pour afficher les chemins actuellement dĂ©finis pour votre travail, vous pouvez utiliser echo "$PATH" dans une Ă©tape ou une action.

Exemple d’ajout d’un chemin systùme

Cet exemple montre comment ajouter le rĂ©pertoire $HOME/.local/bin de l’utilisateur Ă  PATH :

Bash
echo "$HOME/.local/bin" >> "$GITHUB_PATH"

Cet exemple montre comment ajouter le rĂ©pertoire $env:HOMEPATH/.local/bin de l’utilisateur Ă  PATH :

PowerShell
"$env:HOMEPATH/.local/bin" | Out-File -FilePath "$env:GITHUB_PATH" -Append