Lanzamiento de Variables de Entorno y Secretos en GitHub Actions

Si eres nuevo en las variables de entorno de GitHub Actions, es posible que aún no hayas aprendido cómo almacenarlas. ¿Pero es posible? ¡Sí!

En este tutorial, aprenderás diferentes formas de guardar tus variables de entorno de GitHub Actions y secretos que puedes usar cuando sea necesario mientras trabajas con GitHub Actions.

¿Listo? ¡Sigue leyendo para comenzar!

Prerrequisitos

Este tutorial será una demostración práctica que requiere cualquier sistema operativo con Git instalado, Ubuntu OS se utiliza en el tutorial. Además, se necesita un conocimiento básico de las operaciones de Git para hacer commit del código en un repositorio de variables de entorno de GitHub Actions.

Configuración de las variables de entorno de GitHub Actions

Cuando automatizas procesos con el flujo de trabajo de GitHub Actions, es posible que necesites adjuntar variables de entorno a tus flujos de trabajo. ¿Cómo? Primero debes crear y especificar variables de entorno personalizadas en el flujo de trabajo con la palabra clave env.

1. Crea un directorio llamado .github/workflows donde almacenarás tu archivo de flujo de trabajo.

2. A continuación, crea un archivo con el nombre que prefieras en el directorio .github/workflows. Pero para este ejemplo, el archivo se llama main.yml. Copia y pega el código a continuación en el archivo main.yml.

El código a continuación establece y muestra la variable de entorno API_KEY cuando el código activa el flujo de trabajo.

name: env_tutorial
## Activa el flujo de trabajo cuando hay un envío o 
## solicitud de extracción en la rama principal
on: [pull_request, push] 

env:
  ## Establece la variable de entorno
  API_KEY: XXXXXXXXXXXX    

jobs:
  job1:
    ## El tipo de ejecutor en el que se ejecutará el trabajo, 
    ## aquí se ejecuta en la última versión de ubuntu
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        ## Referencia tus variables de entorno
        run: echo "The API key is:${{env.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## Otra forma de referenciar tus variables de entorno
        run: echo "The API key is:$API_KEY"

3. Haz commit y envía el código a tu repositorio de GitHub.

git add .
git commit -m "update"
git push
Pushing updates to the GitHub Actions environment variables repository

4. Ahora, abre tu navegador web y navega hasta tu proyecto en GitHub. Haz clic en la pestaña Acciones, luego haz clic en tu commit actual.

Verás algo como la imagen a continuación, que muestra que GitHub ha ejecutado el flujo de trabajo.

GitHub actions Environment variables for repository

5. Finalmente, haz clic en cualquiera de job1 o job2, y verás que has referenciado correctamente la variable de entorno que inicializaste.

Viewing Referenced Environment Variable (job1)
Viewing Referenced Environment Variable (job2)

Definiendo una Variable de Entorno para un Trabajo

Ahora que has inicializado la variable de entorno en todo el archivo de flujo de trabajo, cualquier trabajo puede hacer referencia a la variable de entorno. Pero tal vez solo quieras que un trabajo haga referencia a la variable de entorno. Si es así, coloca la palabra clave env en el propio trabajo.

1. Reemplaza el código en tu archivo main.yml con el siguiente código.

El código a continuación muestra que cuando colocas la variable de entorno en un trabajo en particular, otros trabajos no pueden hacer referencia a la variable de entorno.

name: env_tutorial
## Activa el flujo de trabajo cuando hay un push, o 
## pull request en la rama principal
on: [pull_request, push] 

jobs:
  job1:
    ## El tipo de runner en el que se ejecutará el trabajo
    runs-on: ubuntu-latest 
    env:
      ## Variable de entorno
      API_KEY: XXXXXXXXXXXX    
    steps:
      - name: step 1
        ## Haz referencia a tus variables de entorno
        run: echo "The API key is:${{env.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## Otra forma de hacer referencia a tus variables de entorno
        run: echo "The API key is:$API_KEY"  

2. Realiza tus cambios y empuja los trabajos desde tu código a las variables de entorno de GitHub Actions como lo hiciste en la sección anterior.

3. Finalmente, navega a tu proyecto en GitHub, luego haz clic en ambos job1 y job2 para ver su comparación:

  • trabajo1 – Verás que has referenciado la variable de entorno perfectamente.
  • trabajo2 – La clave de la API está en blanco.
Viewing Referenced Environment Variable (job1)
Viewing Referenced Environment Variable (job2)

Definir una Variable de Entorno para un Paso

Ahora que has aprendido cómo especificar variables de entorno dentro de un trabajo, debes estar preguntándote cómo puedes hacer lo mismo con los pasos.

Para los pasos en un trabajo, especificas la variable de entorno dentro del paso como lo hiciste para el trabajo.

1. Reemplaza el código que tienes en tu archivo main.yml con el siguiente código.

En el código siguiente, especificas la variable de entorno en paso 1 pero no en paso 2, y verás el efecto en los siguientes pasos.

name: env_tutorial
## Dispara el flujo de trabajo cuando hay un push, o 
## pull request en la rama principal
on: [pull_request, push] 

jobs:
  job1:
    ## El tipo de corredor en el que se ejecutará el trabajo
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        env:
          ## Variable de entorno para el paso 1
          API_KEY: XXXXXXXXXXXX    
        ## Haz referencia a tus variables de entorno
        run: echo "The API key is:${{env.API_KEY}}"   
      - name: step 2
        ## Haz referencia a tus variables de entorno
        run: echo "The API key is:${{env.API_KEY}}"   

2. Ahora confirma los cambios y empuja el código a GitHub.

3. Finalmente, navega hasta tu proyecto en las variables de entorno de GitHub Actions, y haz clic en trabajo1.

Aunque hagas referencia a las dos claves API en el mismo trabajo (job1) en ambos pasos, el paso 2 no pudo evaluar la clave API (en blanco), como se muestra a continuación. ¿Por qué? Porque no especificaste la variable de entorno dentro del paso 2 en tu código.

Setting environment variables for steps

Gestión de variables de entorno a través de las variables de entorno y secretos de GitHub Actions

En lugar de codificar duro, es posible que desees almacenar tu variable de entorno de manera segura, y los secretos de GitHub pueden hacer precisamente eso. Las variables de entorno de GitHub Actions cifran los valores que colocas en secretos, por lo que no son visibles ni legibles a simple vista.

El secreto creado con este método es accesible para todo el flujo de trabajo, trabajos y pasos; no hay restricciones.

Para almacenar tu variable de entorno en Secretos de GitHub:

1. Primero, sube tu código a GitHub como lo hiciste en las secciones anteriores.

2. A continuación, navega hasta tu proyecto en GitHub y haz clic en la pestaña Configuración.

Haz clic en Secretos en la pestaña que está debajo para comenzar a agregar un secreto.

Storing environment variables in Secrets

3. Luego, haz clic en Nuevo secreto de repositorio, y verás un formulario para completar detalles sobre el secreto que estás agregando.

Creating new repository secret

4. Completa el formulario correctamente (Nombre y Valor) y haz clic en el botón Agregar secreto para enviarlo. Ahora la API_KEY está guardada en Secretos de GitHub. De esta forma, GitHub establece de forma segura las variables de entorno como secretos que puedes referenciar al trabajar en GitHub Actions.

Filling name and value of the new secret

5. Edita tu archivo main.yml y reemplaza la palabra clave env con secrets.

A continuación, puedes ver que haces referencia a la clave API en este formato ${{secrets.API_KEY}} en lugar de codificar la clave API directamente.

name: env_tutorial
## Activa el flujo de trabajo cuando hay un push o 
## pull request en la rama principal
on: [pull_request, push] 

jobs:
  job1:
    ## El tipo de runner en el que se ejecutará el trabajo
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        ## Hace referencia a tus variables de entorno
        run: echo "The API key is:${{secrets.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## Hace referencia a tus variables de entorno
        run: echo "The API key is:${{secrets.API_KEY}}"  

6. Finalmente, realiza commit y push del código a GitHub y ve a tu proyecto en las variables de entorno de GitHub Actions. Hace referencia a la primera sección.

Verás algo como la imagen a continuación, pero no podrás ver el API_key real ya que GitHub encripta los valores que colocas en secrets.

Displaying API key from GitHub Actions environment variables secrets

Referencia a las variables de entorno predeterminadas de GitHub

Existen algunas variables de entorno predeterminadas proporcionadas por GitHub, que puedes utilizar para acceder a sistemas de archivos en el repositorio en lugar de codificar rutas. Las variables de entorno predeterminadas de GitHub te permiten ser más dinámico al hacer referencia a las variables de entorno proporcionadas por GitHub.

Algunas de las rutas que puedes obtener con las variables de entorno predeterminadas son las siguientes:

  • GITHUB_JOB – Proporciona el job_id del trabajo actual.
  • GITHUB_ACTION – Proporciona el id de la acción actual
  • GITHUB_ACTION_PATH – Proporciona la ruta donde se encuentra tu acción.
  • GITHUB_ACTOR – proporciona el nombre de la persona o aplicación que inició el flujo de trabajo, como tu nombre de usuario de GitHub.
  • GITHUB_RUN_ID – proporciona el número único del comando run.

Reemplaza lo que tengas en tu archivo main.yml con el código a continuación. El código a continuación muestra la variable de entorno predeterminada establecida en el código.

name: env_tutorial
## Activa el flujo de trabajo cuando se realiza un push o 
## pull request en la rama principal
on: [pull_request, push] 

jobs:
  job1:
    ## El tipo de runner en el que se ejecutará el trabajo
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        run: |
          echo "The job_id is: $GITHUB_JOB"   # referencia las variables de entorno predeterminadas
          echo "The id of this action is: $GITHUB_ACTION"   # referencia las variables de entorno predeterminadas
          echo "The run id is: $GITHUB_RUN_ID" 
          echo "The GitHub Actor's username is: $GITHUB_ACTOR"
      - name: step 2
        run: |
          echo "The run id is: $GITHUB_RUN_ID"

Compromete y sube los cambios de código a GitHub, revisa tus acciones en tu proyecto de variables de entorno de GitHub Actions, y verás algo como la imagen a continuación.

Referencing the Default GitHub environment variables

Conclusión

A lo largo de este tutorial, has aprendido cómo gestionar las variables de entorno de GitHub Actions. Ahora deberías tener un conocimiento fundamental sobre cómo almacenar variables de entorno de forma segura y cómo usar las predeterminadas proporcionadas por GitHub.

Ahora, ¿cómo planeas incorporar este conocimiento recién adquirido al trabajar con GitHub Actions? ¿Quizás guardar las claves API necesarias para implementación?

Source:
https://adamtheautomator.com/github-actions-environment-variables/