Implementación de variables y scripts en un flujo de trabajo
Ahora que conoce los componentes de un archivo de flujo de trabajo, puede explorar cómo personalizar estos flujos de trabajo en varios escenarios. En esta unidad nos centraremos en cómo usar variables y scripts para optimizar el flujo de trabajo. Las variables proporcionan una manera de almacenar y reutilizar información de configuración no sensible. Puede almacenar cualquier dato de configuración, como marcas del compilador, nombres de usuario o nombres de servidor como variables. Las variables se interpolan en la máquina del ejecutor que ejecuta el flujo de trabajo. Los comandos que se ejecutan en acciones o pasos de flujo de trabajo pueden crear, leer y modificar variables.
Puede establecer sus propias variables personalizadas o usar las variables de entorno predeterminadas que GitHub establece automáticamente. Puede crear una variable personalizada de dos maneras.
- Para definir una variable de entorno para su uso en un único flujo de trabajo, puede usar la clave
enven el archivo de flujo de trabajo. - Para definir una variable de configuración en varios flujos de trabajo, puede definirla en el nivel de organización, repositorio o entorno.
Definición de variables de entorno para un único flujo de trabajo
Para establecer una variable de entorno personalizada para un único flujo de trabajo, puede definirla mediante la clave env en el archivo de flujo de trabajo. El ámbito de una variable personalizada establecida por este método se limita al elemento donde se define. Puede definir variables cuyo ámbito es:
- El flujo completo de trabajo, utilizando
enven el nivel superior del archivo del flujo de trabajo. - El contenido de una tarea dentro de un flujo de trabajo, utilizando
jobs.<job_id>.env. - Un paso específico dentro de un trabajo mediante
jobs.<job_id>.steps[*].env.
Nota
Tanto jobs.<job_id>.env como jobs.<job_id>.steps[*].env implementan contextos que se tratan más adelante en este módulo.
En el ejemplo de flujo de trabajo siguiente se implementan dos variables, DAY_OF_WEEK y Greeting para generar un saludo cuando se ejecuta.
name: Greeting on variable day
on:
workflow_dispatch
env:
DAY_OF_WEEK: Monday
jobs:
greeting_job:
runs-on: ubuntu-latest
env:
Greeting: Hello
steps:
- name: "Say Hello"
run: echo "$Greeting, today is $DAY_OF_WEEK!"
Convenciones de nomenclatura para variables de entorno
Al establecer una variable de entorno, no puede usar ninguno de los nombres de variables de entorno predeterminados. Si intenta invalidar el valor de una de estas variables predeterminadas, se omite la asignación.
Sugerencia
Para obtener una lista completa de las variables de entorno predeterminadas, visite Variables de entorno predeterminadas.
Creación de variables de configuración para un repositorio
Para crear secretos o variables en GitHub para un repositorio de cuentas personales, debe ser el propietario del repositorio. Para crear secretos o variables en GitHub para un repositorio de la organización, debe tener acceso admin. Por último, para crear secretos o variables para un repositorio de cuentas personales o un repositorio de la organización a través de la API REST, debe tener acceso de colaborador.
Precedencia de variables de configuración
Si existe una variable con el mismo nombre en varios niveles, la variable en el nivel más bajo tiene prioridad. Por ejemplo, si una variable de nivel de organización tiene el mismo nombre que una variable de nivel de repositorio, la variable de nivel de repositorio tiene prioridad. Del mismo modo, si una organización, un repositorio y un entorno tienen una variable con el mismo nombre, la variable de nivel de entorno tiene prioridad.
Adición de scripts al flujo de trabajo
Puede usar un flujo de trabajo de Acciones de GitHub para ejecutar scripts y comandos de shell, que luego se ejecutan en el ejecutor asignado. En el ejemplo siguiente se muestra cómo usar la palabra clave run para ejecutar el comando npm install -g bats en el ejecutor.
jobs:
example-job:
runs-on: ubuntu-latest
steps:
- run: npm install -g bats
Para ejecutar un script almacenado en el repositorio, primero debe extraer el repositorio en el ejecutor. En el ejemplo siguiente se extrae el repositorio, se establece el directorio de trabajo (la ubicación de los scripts en el repositorio) y se ejecuta el script my-script.sh.
jobs:
example-job:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./scripts
steps:
- name: Check out the repository to the runner
uses: actions/checkout@v4
- name: Run a script
run: ./my-script.sh
Cualquier script que desee que ejecute una tarea del flujo de trabajo debe ser ejecutable. Puede pasar el script como argumento al intérprete que ejecuta el script (por ejemplo, run: bash script.sh) o haciendo que el propio archivo sea ejecutable.