Skip to main content

GitHub AE es una versión limitada en este momento.

Comandos de flujo de trabajo para Acciones de GitHub

Puedes usar comandos de flujo de trabajo cuando ejecutas comandos de Shell en un flujo de trabajo o en el código de una acción.

Tool navigation

Acerca de los comandos de flujo

Las acciones pueden comunicarse con la máquina del ejecutor para establecer variables de entorno, valores de salida utilizados por otras acciones, agregar mensajes de depuración a los registros de salida y otras tareas.

La mayoría de los comandos de flujo de trabajo usan el comando echo en un formato específico, mientras que otros se pueden invocar escribiendo en un archivo. Para más información, vea "Archivos de entorno".

Ejemplo de un comando de flujo de trabajo

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

Nota: Los nombres de parámetros y comandos de flujo de trabajo no distinguen mayúsculas de minúsculas.

Advertencia: Si utiliza el símbolo del sistema, omita los caracteres de comillas dobles (") al usar comandos de flujo de trabajo.

Utilizar comandos de flujo de trabajo para acceder a las funciones de toolkit

En actions/toolkit se incluye una serie de funciones que se pueden ejecutar como comandos de flujo de trabajo. Use la sintaxis :: para ejecutar los comandos de flujo de trabajo dentro del archivo YAML; estos comandos se envían al ejecutor por medio de stdout. Por ejemplo, en vez de utilizar código para configurar una salida, como se muestra aquí:

JavaScript
core.setOutput('SELECTED_COLOR', 'green');

Ejemplo: Configurar un valor

Puede usar el comando set-output en el flujo de trabajo para establecer el mismo valor:

YAML
      - name: Set selected color
        run: echo '::set-output name=SELECTED_COLOR::green'
        id: color-selector
      - name: Get color

        run: echo "The selected color is ${{ steps.color-selector.outputs.SELECTED_COLOR }}"

YAML
      - name: Set selected color
        run: Write-Output "::set-output name=SELECTED_COLOR::green"
        id: color-selector
      - name: Get color

        run: Write-Output "The selected color is ${{ steps.color-selector.outputs.SELECTED_COLOR }}"

La siguiente tabla muestra qué funciones del toolkit se encuentran disponibles dentro de un flujo de trabajo:

Funcion del ToolkitComando equivalente del flujo de trabajo
core.addPathAccesible mediante el archivo de entorno GITHUB_PATH
core.debugdebug
core.noticenotice
core.errorerror
core.endGroupendgroup
core.exportVariableAccesible mediante el archivo de entorno GITHUB_ENV
core.getInputAccesible mediante la variable de entorno INPUT_{NAME}
core.getStateAccesible mediante la variable de entorno STATE_{NAME}
core.isDebugAccesible mediante la variable de entorno RUNNER_DEBUG
core.summaryAccesible mediante el archivo de entorno GITHUB_STEP_SUMMARY
core.saveStatesave-state
core.setCommandEchoecho
core.setFailedSe usa como acceso directo de ::error y exit 1
core.setOutputset-output
core.setSecretadd-mask
core.startGroupgroup
core.warningwarning

Configurar un parámetro de salida

Establece un parámetro de salida de la acción.

Text
::set-output name={name}::{value}

Opcionalmente, también puedes declarar parámetros de salida en el archivo de metadatos de una acción. Para obtener más información, vea «Sintaxis de metadatos para Acciones de GitHub».

Para escapar cadenas multilínea para establecer un parámetro de salida, crea una variable de entorno y úsala en un comando de flujo de trabajo. Para obtener más información, consulta "Configuración de una variable de entorno".

Ejemplo;: Configurar un parámetro de salida

Bash
echo "::set-output name=action_fruit::strawberry"
PowerShell
Write-Output "::set-output name=action_fruit::strawberry"

Agregar un mensaje de depuración

Imprime un mensaje de depuración en el registro. Debe crear un secreto denominado ACTIONS_STEP_DEBUG con el valor true para ver los mensajes de depuración establecidos por este comando en el registro. Para obtener más información, vea «Habilitación del registro de depuración».

Text
::debug::{message}

Ejemplo: Configurar un mensaje de depuración

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

Configurar un mensaje de aviso

Crea un mensaje de aviso e imprime el mensaje en la bitácora. Este mensaje creará una anotación, la cual puede asociar el mensaje con un archivo particular de tu repositorio. Opcionalmente, tu mensaje puede especificar una posición dentro del archivo.

Text
::notice file={name},line={line},endLine={endLine},title={title}::{message}
ParámetroValue
titleTítulo personalizado
fileFilename
colNúmero de columna, a partir de 1
endColumnNúmero de columna final
lineNúmero de línea, a partir de 1
endLineNúmero de línea final

Ejemplo: configurar un mensaje de notificación

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::Missing semicolon"

Configurar un mensaje de advertencia

Crea un mensaje de advertencia e imprime el mensaje en el registro. Este mensaje creará una anotación, la cual puede asociar el mensaje con un archivo particular de tu repositorio. Opcionalmente, tu mensaje puede especificar una posición dentro del archivo.

Text
::warning file={name},line={line},endLine={endLine},title={title}::{message}
ParámetroValue
titleTítulo personalizado
fileFilename
colNúmero de columna, a partir de 1
endColumnNúmero de columna final
lineNúmero de línea, a partir de 1
endLineNúmero de línea final

Ejemplo: Configurar un mensaje de advertencia

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

Configurar un mensaje de error

Crea un mensaje de error e imprime el mensaje en el registro. Este mensaje creará una anotación, la cual puede asociar el mensaje con un archivo particular de tu repositorio. Opcionalmente, tu mensaje puede especificar una posición dentro del archivo.

Text
::error file={name},line={line},endLine={endLine},title={title}::{message}
ParámetroValue
titleTítulo personalizado
fileFilename
colNúmero de columna, a partir de 1
endColumnNúmero de columna final
lineNúmero de línea, a partir de 1
endLineNúmero de línea final

Ejemplo: Configurar un mensaje de error

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

Agrupar líneas de las bitácoras

Crea un grupo expansible en la bitácora. Para crear un grupo, use el comando group y especifique title. Todo lo que imprima en el registro entre los comandos group y endgroup se anida dentro de una entrada expandible en el registro.

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

Ejemplo: Agrupar líneas de bitácoras

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

Captura de pantalla del registro del paso de flujo de trabajo. La segunda línea, "My title", está precedida por una flecha hacia abajo, lo que indica un grupo expandido. La siguiente línea, "Inside group", tiene sangría aplicada abajo.

Enmascaramiento de un valor en un registro

Text
::add-mask::{value}

El enmascaramiento de un valor impide que una cadena o variable se imprima en el registro. Cada palabra enmascarada separada por un espacio en blanco se reemplaza con el carácter *. Puede usar una variable de entorno o una cadena para el valor value de la máscara. Al enmascarar un valor, se trata como un secreto y se oculta en el ejecutor. Por ejemplo, después de enmascarar un valor, no podrá establecerlo como salida.

Ejemplo: Enmascarar una secuencia

Al imprimir "Mona The Octocat" en el registro, verá "***".

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

Advertencia: asegúrate de registrar el secreto con "add-mask" antes de generarlo en los registros de compilación o usarlo en cualquier otro comando de flujo de trabajo.

Ejemplo: Enmascarar una variable de ambiente

Al imprimir la variable MY_NAME o el valor "Mona The Octocat" en el registro, verá "***" en lugar 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"

Ejemplo: Enmascaramiento de una salida generada dentro de un único trabajo

**Nota**: debes usar `add-mask` antes de usar `set-output`. De lo contrario, la salida no se enmascarará.

Si no necesitas pasar el secreto de un trabajo a otro, puedes hacer lo siguiente:

  1. Generar el secreto (sin producir una salida).

  2. Enmascararlo con add-mask.

  3. Usar set-output para que el secreto esté disponible para otros pasos dentro del trabajo.

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 "::set-output name=secret-number::$the_secret"
      - 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"
          Write-Output "::set-output name=secret-number::$TheSecret"
      - 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 }}"

Ejemplo: Enmascaramiento y paso de un secreto entre trabajos o flujos de trabajo

Si quieres pasar un secreto enmascarado entre trabajos o flujos de trabajo, debes almacenar el secreto en un almacén y, luego, recuperarlo en el trabajo o flujo de trabajo subsiguiente.

Configurar

  1. Configura un almacén de secretos para almacenar el secreto que generarás durante el flujo de trabajo. Por ejemplo, Vault.
  2. Genera una clave para leer y escribir en ese almacén de secretos. Almacena la clave como secreto de repositorio. En el siguiente flujo de trabajo de ejemplo, el nombre del secreto es SECRET_STORE_CREDENTIALS. Para obtener más información, vea «Uso de secretos en Acciones de GitHub».

Flujo de trabajo

Nota: Este flujo de trabajo usa un almacén de secretos imaginario, secret-store, que tiene los comandos imaginarios store-secret y retrieve-secret. some/secret-store@ 27b31702a0e7fc50959f5ad993c78deac1bdfc29 es una acción imaginaria que instala la aplicación secret-store y la configura para conectarse a un objeto instance con credentials.

YAML
on: push

jobs:
  secret-generator:
    runs-on: ubuntu-latest
    outputs:
      handle: ${{ steps.generate-secret.outputs.handle }}
    steps:
    - uses: some/secret-store@v1
      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 "::set-output name=handle::$SECRET_HANDLE"
  secret-consumer:
    runs-on: macos-latest
    needs: secret-generator
    steps:
    - uses: some/secret-store@v1
      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@v1
      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")
        Write-Output "::set-output name=handle::$Secret_Handle"
  secret-consumer:
    runs-on: macos-latest
    needs: secret-generator
    steps:
    - uses: some/secret-store@v1
      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"

Detener e iniciar comandos de flujo de trabajo

Deja de procesar cualquier comando de flujo de trabajo. Este comando especial te permite registrar lo que sea sin ejecutar accidentalmente un comando de flujo de trabajo. Por ejemplo, podrías dejar de registrar para producir un script completo que tenga comentarios.

Text
::stop-commands::{endtoken}

Para detener el procesamiento de los comandos de flujo de trabajo, pase un token único a stop-commands. Para resumir los comandos de flujo de trabajo de procesamiento, pasa el mismo token que utilizaste para detener los comandos de flujo de trabajo.

Advertencia: Asegúrese de que el token que usa se genera aleatoriamente y es único para cada ejecución.

Text
::{endtoken}::

Ejemplo: Parar e iniciar comandos de flujos de trabajo

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

Hacer eco en las salidas de comando

Habilita o inhabilita el hacer eco en los comandos de los flujos de trabajo. Por ejemplo, si usa el comando set-output en un flujo de trabajo, establece un parámetro de salida pero el registro de la ejecución de flujo de trabajo no muestra el propio comando. Si habilita el eco de comandos, el registro muestra el comando, como ::set-output name={name}::{value}.

Text
::echo::on
::echo::off

El eco de comando se encuentra inhabilitado predeterminadamente. Sin embargo, los comandos de flujo de trabajo hacen eco si existen errores para procesarlos.

Los comandos add-mask, debug, warning y error no admiten el eco, porque sus salidas ya se han reproducido en el registro.

También puede habilitar el eco de comandos globalmente si activa el registro de depuración de pasos mediante el secreto ACTIONS_STEP_DEBUG. Para más información, consulta "Habilitación del registro de depuración". Por el contrario, el comando de flujo de trabajo echo permite habilitar el eco de comandos en un nivel más granular, en vez de habilitarlo para cada flujo de trabajo en un repositorio.

Ejemplo: Alternar el eco de comandos

YAML
jobs:
  workflow-command-job:
    runs-on: ubuntu-latest
    steps:
      - name: toggle workflow command echoing
        run: |
          echo '::set-output name=action_echo::disabled'
          echo '::echo::on'
          echo '::set-output name=action_echo::enabled'
          echo '::echo::off'
          echo '::set-output name=action_echo::disabled'
YAML
jobs:
  workflow-command-job:
    runs-on: windows-latest
    steps:
      - name: toggle workflow command echoing
        run: |
          write-output "::set-output name=action_echo::disabled"
          write-output "::echo::on"
          write-output "::set-output name=action_echo::enabled"
          write-output "::echo::off"
          write-output "::set-output name=action_echo::disabled"

El ejemplo anterior imprime las siguientes líneas en la bitácora:

Text
::set-output name=action_echo::enabled
::echo::off

Solo los segundos comandos de flujo de trabajo set-output y echo se incluyen en el registro, porque el eco de comandos solo se ha habilitado al ejecutarlos. Aunque no siempre hace eco, el parámetro de salida se configura en todos los casos.

Enviar valores a las acciones pre y post

Puedes usar el comando save-state para crear variables de entorno para compartirlas con las acciones pre: o post: del flujo de trabajo. Por ejemplo, puede crear un archivo con la acción pre:, pasar la ubicación del archivo a la acción main: y, después, usar la acción post: para eliminar el archivo. Como alternativa, podría crear un archivo con la acción main:, pasar la ubicación del archivo a la acción post: y también usar la acción post: para eliminar el archivo.

Si tienes varias acciones pre: o post:, solo podrás acceder al valor guardado en la acción donde se usó save-state. Para más información sobre la acción post:, consulta "Sintaxis de metadatos para Acciones de GitHub".

El comando save-state solo se puede ejecutar dentro de una acción y no está disponible para los archivos YAML. El valor guardado se almacena como un valor de entorno con el prefijo STATE_.

En este ejemplo se usa JavaScript para ejecutar el comando save-state. La variable de entorno resultante se denomina STATE_processID con el valor de 12345:

JavaScript
console.log('::save-state name=processID::12345')

Después, la variable STATE_processID está disponible exclusivamente para el script de limpieza que se ejecuta en la acción main. Este ejemplo se ejecuta en main y usa JavaScript para mostrar el valor asignado a la variable de entorno STATE_processID:

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

Archivos de ambiente

Durante la ejecución de un flujo de trabajo, el ejecutor genera archivos temporales que pueden utilizarse para llevar a cabo ciertas acciones. La ruta a estos archivos se expone a través de variables de ambiente. Necesitarás utilizar codificación UTF-8 cuando escribas en estos archivos para garantizar el procesamiento adecuado de los comandos. Se pueden escribir varios comandos en el mismo archivo, separados por líneas nuevas.

Nota: En las versiones 5.1 y posteriores de PowerShell (shell: powershell) no se usa UTF-8 de forma predeterminada, por lo que debe especificar la codificación UTF-8. Por ejemplo:

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

En las versiones 6 y superiores de PowerShell Core (shell: pwsh) se usa UTF-8 de forma predeterminada. Por ejemplo:

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

Configuración de una variable de entorno

Nota: Para evitar problemas, se recomienda tratar las variables de entorno como distingue mayúsculas de minúsculas, independientemente del comportamiento del sistema operativo y del shell que esté usando.

Bash
echo "{environment_variable_name}={value}" >> "$GITHUB_ENV"
  • Utilizar PowerShell versión 6 y superior:

    PowerShell
    "{environment_variable_name}={value}" | Out-File -FilePath $env:GITHUB_ENV -Append
    
  • Utilizar PowerShell versión 5.1 e inferior:

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

Puede hacer que una variable de entorno esté disponible en cualquier paso posterior de un trabajo de un flujo de trabajo si define o actualiza la variable de entorno, y lo escribe en el archivo de entorno GITHUB_ENV. El paso que crea o actualiza la variable de ambiente no tiene acceso al valor nuevo, pero todos los pasos subsecuentes en un job tendrán acceso.

No se puede sobrescribir el valor de las variables de entorno predeterminadas GITHUB_* y RUNNER_*. Actualmente, se puede sobrescribir el valor de la variable CI. Sin embargo, no se garantiza que sea posible siempre. Para obtener más información sobre cómo establecer variables de entorno, consulta "AUTOTITLE".

Ejemplo de escritura de una variable de entorno en 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" | Out-File -FilePath $env:GITHUB_ENV -Append
  - name: Use the value
    id: step_two
    run: |
      Write-Output "$env:action_state" # This will output 'yellow'

Secuencias de línea múltiple

Para las secuencias de lìnea mùltiple, puedes utilizar un delimitador con la siguiente sintaxis.

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

Advertencia: Asegúrese de que el delimitador que está usando no se producirá en una línea propia dentro del valor. Si el valor es completamente arbitrario, no debe usar este formato. Escriba el valor en un archivo en su lugar.

Ejemplo de una cadena de varias líneas

En este ejemplo se usa EOF como delimitador y se establece la variable de entorno JSON_RESPONSE en el valor de la respuesta 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 = -join (1..15 | ForEach {[char]((48..57)+(65..90)+(97..122) | Get-Random)})
      "JSON_RESPONSE<<$EOF" | Out-File -FilePath $env:GITHUB_ENV -Append
      (Invoke-WebRequest -Uri "https://example.com").Content | Out-File -FilePath $env:GITHUB_ENV -Append
      "$EOF" | Out-File -FilePath $env:GITHUB_ENV -Append
    shell: pwsh

Adición de un resumen de trabajos

Bash
echo "{markdown content}" >> $GITHUB_STEP_SUMMARY
PowerShell
"{markdown content}" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append

Puedes establecer Markdown personalizado para cada trabajo de modo que se muestre en la página de resumen de una ejecución de flujo de trabajo. Puedes usar resúmenes de trabajos para mostrar y agrupar contenido único, como resúmenes de resultados de pruebas, de modo que alguien que vea el resultado de una ejecución de flujo de trabajo no necesite ir a los registros para ver información importante relacionada con la ejecución, como errores.

Los resúmenes de trabajos admiten Markdown de tipo GitHub y puedes agregar el contenido de Markdown para un paso al archivo de entorno GITHUB_STEP_SUMMARY. GITHUB_STEP_SUMMARY es único para cada paso de un trabajo. Para obtener más información sobre el archivo por paso al que hace referencia GITHUB_STEP_SUMMARY, consulta "Archivos de entorno".

Cuando un trabajo finaliza, los resúmenes de todos los pasos de un trabajo se agrupan en un único resumen de trabajo y se muestran en la página resumen de ejecución del flujo de trabajo. Si varios trabajos generan resúmenes, estos se ordenan según la hora de finalización del trabajo.

Ejemplo de adición de un resumen del trabajo

Bash
echo "### Hello world! :rocket:" >> $GITHUB_STEP_SUMMARY
PowerShell
"### Hello world! :rocket:" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append

Captura de pantalla de la página de resumen de una ejecución de flujo de trabajo. Debajo de "example summary" se encuentra "Hello world!" y un emoji de cohete.

Contenido de Markdown multilínea

En el caso de contenido de Markdown multilínea, puedes usar >> para anexar continuamente contenido al paso actual. Con cada operación de anexión, se agrega automáticamente un carácter de nueva línea.

Ejemplo de contenido de Markdown multilínea

- 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" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append
    "" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append # this is a blank line
    "- Lets add a bullet point" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append
    "- Lets add a second bullet point" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append
    "- How about a third one?" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append

Sobrescritura de resúmenes de trabajos

Para borrar todo el contenido del paso actual, puede usar > para sobrescribir cualquier contenido en Bash o eliminar -Append en PowerShell

Ejemplo de sobrescribir resúmenes de trabajos

- 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" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append
    "There was an error, we need to clear the previous Markdown with some new content." | Out-File -FilePath $env:GITHUB_STEP_SUMMARY

Eliminación de resúmenes de trabajos

Para quitar completamente un resumen del paso actual, se puede eliminar el archivo al que hace referencia GITHUB_STEP_SUMMARY.

Ejemplo de eliminación de resúmenes de trabajos

- 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" | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Append
    Remove-Item $env:GITHUB_STEP_SUMMARY

Una vez que se ha completado un paso, se cargan los resúmenes de trabajo y los pasos posteriores no pueden modificar el contenido de Markdown cargado anteriormente. Los resúmenes enmascaran automáticamente los secretos que podrían haberse agregado de forma accidental. Si un resumen de trabajo contiene información confidencial que se debe eliminar, puedes eliminar toda la ejecución del flujo de trabajo para quitar todos sus resúmenes de trabajo. Para más información, consulta "Borrar una ejecución de flujo de trabajo".

Aislamiento y límites de pasos

Los resúmenes de trabajo están aislados entre los pasos y cada paso está restringido a un tamaño máximo de 1 MiB. Se aplica aislamiento entre los pasos para que el Markdown que podría tener un formato incorrecto en un paso no pueda interrumpir la representación de Markdown para los pasos posteriores. Si se agrega más de 1 MiB de contenido a un paso, se producirá un error en la carga del paso y se creará una anotación de error. Los errores de carga de resúmenes de trabajos no afectan al estado general de un paso o un trabajo. Se muestra un máximo de 20 resúmenes de trabajos de los pasos por trabajo.

Agregar una ruta de sistema

Antepone un directorio a la variable del sistema PATH y hace que esté disponible automáticamente para todas las acciones posteriores en el trabajo actual; la acción que está actualmente en ejecución no puede acceder a la variable de ruta actualizada. A fin de ver las rutas definidas actualmente para el trabajo, puede usar echo "$PATH" en un paso o una acción.

Bash
echo "{path}" >> $GITHUB_PATH
PowerShell
"{path}" | Out-File -FilePath $env:GITHUB_PATH -Append

Ejemplo de adición de una ruta de acceso del sistema

En este ejemplo se muestra cómo agregar el directorio de usuario $HOME/.local/bin a PATH:

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

En este ejemplo se muestra cómo agregar el directorio de usuario $env:HOMEPATH/.local/bin a PATH:

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