Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.

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.

GitHub Actions se encuentra disponible con GitHub Free, GitHub Pro, GitHub Free para organizaciones, GitHub Team, GitHub Enterprise Cloud, y GitHub One. GitHub Actions no se encuentra disponible para repositorios privados que pertenezcan a cuentas que utilicen planes tradicionales por repositorio. Para obtener más información, consulta la sección "Productos de GitHub".

En este artículo

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.

Los comandos de flujo de trabajo usan el comando echo en un formato específico.

echo ":: Workflow-Command Parameter1 ={data}, parameter2 ={data}::{command value}"

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

Advertencia: si estás usando el símbolo del sistema, omite los caracteres de comillas dobles (") cuando uses comandos de flujo de trabajo.

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

El actions/toolkit incluye varias funciones que se pueden ejecutar como comandos de flujo de trabajo. Utiliza la sintaxis :: para ejecutar los comandos de flujo de trabajo dentro de tu archivo YAML; estos comandos se envían entonces a través de stdout. Por ejemplo, en vez de utilizar el código para configurar una variable de ambiente, como se muestra a continuación:

core.exportVariable('SELECTED_COLOR', 'green');

Puedes utilizar el comando set-env en tu flujo de trabajo para configurar el mismo valor:

      - name: Set selected color
        run: echo '::set-env name=SELECTED_COLOR::green'
      - name: Get color
        run: echo 'The selected color is' $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.addPathadd-path
core.debugdebug
core.errorerror
core.endGroupendgroup
core.exportVariableset-env
core.getInputAccesible utilizando la variable de ambiente INPUT_{NAME}
core.getStateAccesible utilizando la variable de ambienteSTATE_{NAME}
core.isDebugAccesible utilizando la variable de ambiente RUNNER_DEBUG
core.saveStatesave-state
core.setFailedUtilizada como un atajo para ::error y exit 1
core.setOutputset-output
core.setSecretadd-mask
core.startGroupgrupo
core.warningwarning file

Configurar una variable de ambiente

::set-env name={name}::{value}

Crea o actualiza una variable de entorno para todas las acciones que se ejecutan a continuación en un puesto. La acción que crea o actualiza la variable de entorno no tiene acceso al nuevo valor, pero todas las acciones subsiguientes en un puesto tendrán acceso. Las variables de entorno distinguen mayúsculas de minúsculas y puedes incluir puntuación.

Ejemplo

echo "::set-env name=action_state::yellow"

Configurar un parámetro de salida

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

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

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

Ejemplo

echo "::set-output name=action_fruit::strawberry"

Agregar una ruta de sistema

::add-path::{path}

Anexa un directorio a la variable de RUTA del sistema para todas las acciones subsiguientes en el puesto actual. La acción que se ejecuta actualmente no puede acceder a la nueva variable de ruta.

Ejemplo

echo "::add-path::/path/to/dir"

Agregar un mensaje de depuración

::debug::{message}

Imprime un mensaje de depuración para el registro. Debes crear un archivo ACTIONS_STEP_DEBUG designado secretamente con el valor true para ver los mensajes de depuración establecidos por este comando en el registro. Para obtener más información, consulta la sección "Administrar la ejecución de un flujo de trabajo".

Ejemplo

echo "::debug::Set the Octocat variable"

Configurar un mensaje de advertencia

::warning file={name},line={line},col={col}::{message}

Crea un mensaje de advertencia e imprime el mensaje en el registro. Opcionalmente, puedes brindar un nombre de archivo (file), número de línea (line), y columna (col) donde se produjo la advertencia.

Ejemplo

echo "::warning file=app.js,line=1,col=5::Missing semicolon"

Configurar un mensaje de error

::error file={name},line={line},col={col}::{message}

Crea un mensaje de error e imprime el mensaje en el registro Opcionalmente, puedes brindar un nombre de archivo (file), número de línea (line), y columna (col) donde se produjo la advertencia.

Ejemplo

echo "::error file=app.js,line=10,col=15::Something went wrong"

Enmascarar un valor en el registro

::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 *. Puedes usar una variable de entorno o cadena para el valor de la máscara.

Ejemplo de enmascaramiento de una cadena

Cuando imprimas "Mona The Octocat" en el registro, verás "***".

echo "::add-mask::Mona The Octocat"

Ejemplo de enmascaramiento de una variable de entorno

Cuando imprimes la variable MY_NAME o el valor "Mona The Octocat" en el registro, verás "***" en lugar de "Mona The Octocat".

MY_NAME="Mona The Octocat"
echo "::add-mask::$MY_NAME"

Detener e iniciar comandos de flujo de trabajo

::stop-commands::{endtoken}

Detiene el procesamiento de cualquier comando de flujo de trabajo. Este comando especial te permite registrar cualquier cosa sin ejecutar accidentalmente un comando de flujo de trabajo. Por ejemplo, podrías dejar de registrar para producir un script completo que tenga comentarios.

Ejemplo deteniendo comandos de flujo de trabajo

echo "::stop-commands::pause-logging"

Para iniciar los comandos de flujo de trabajo, pasa el token que usaste para detener los comandos de flujo de trabajo.

::{endtoken}::

Ejemplo de inicio de comandos de flujo

echo "::pause-logging::"

Enviar valores a las acciones pre y post

Puedes utilizar el comando save-state para crear variables de ambiente para compartir con tus acciones pre: o post: de flujo de trabajo. Por ejemplo, puedes crear un archivo con la acción pre:, pasar la ubicación del archivo a la acción main:, y después, utilizar la acción post: para borrar el archivo. Como alternativa, puedes crear un archivo con la acción main:, pasar la ubicación del archivo a la acción post:, y también utilizar la acción post: para borrar el archivo.

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

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

Este ejemplo utiliza JavaScript para ejecutar el comando save-state. La variable de ambiente resultante se nombra STATE_processID con el valor de 12345:

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

La variable STATE_processID se encontrará entonces exclusivamente disponible para el script de limpieza que se ejecuta bajo la acción main. Este ejemplo se ejecuta en main y utiliza JavaScript para mostrar el valor asignado a la variable de ambiente STATE_processID:

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

¿Te ayudó este documento?

Privacy policy

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

O, learn how to contribute.