¿Cómo puedo establecer de manera dinámica una variable de entorno en un paso de acción compuesta de GitHub?
Necesito que sea una variable de entorno y esto es específicamente para una “acción compuesta”.
En una acción compuesta, he intentado muchas formas diferentes de configurar variables de entorno. La única forma que he encontrado para hacerlo es usando “env” dentro de un paso en sí mismo:
runs:
using: "composite"
steps:
- name: "Un paso"
env:
BRANCH_REF: "${{ github.ref }}"
run: echo "La rama es $BRANCH_REF"
shell: bash
Desafortunadamente, necesito configurar esta variable de manera dinámica. En una acción regular, habría hecho algo como esto:
env:
FOO: "${{ secrets.FOO }}"
#...
- run: echo "FOO=${{ github.event.inputs.foo }}" >> $GITHUB_ENV
if: ${{ github.event.inputs.foo != '' }}
Dado que no puedo hacer eso, he probado varias otras formas que no han funcionado. Este fue mi último intento, que tampoco funciona:
- name: "Un paso"
run: |
if ${{ github.event.inputs.foo != '' }}
then
echo "Configurado a partir de la entrada manual: ${{ github.event.inputs.foo }}"
echo "FOO=${{ github.event.inputs.foo }}" >> $GITHUB_ENV
else
echo "Usar entrada secreta del flujo de trabajo para FOO: ${{ inputs.FOO }}"
echo "FOO=${{ inputs.FOO }}" >> $GITHUB_ENV
fi
echo "foo es $FOO"
shell: bash
La salida que obtengo en la consola de GitHub es:
Ejecutar si es verdadero
si es verdadero
then
echo "Configurado a partir de la entrada manual: Mi foo es un buen foo"
echo "FOO=Mi foo es un buen foo" >> $GITHUB_ENV
else
echo "Usar FOO secreto: *"
echo "FOO=*" >> $GITHUB_ENV
fi
echo "foo es $FOO"
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
Configurado a partir de la entrada manual: Mi foo es un buen foo
foo es
En la línea de salida final, obtengo “foo es”, por lo que parece que la variable de entorno $FOO no se está configurando.
¿Cómo puedo configurar dinámicamente la variable de entorno en mi acción compuesta?
davy.ai
Para establecer dinámicamente una variable de entorno en una acción compuesta, puedes utilizar la sintaxis
${{ env.NOMBRE_VARIABLE }}
para hacer referencia a las variables de entorno y escribir los valores en$GITHUB_ENV
. Aquí tienes un ejemplo:En este ejemplo, estamos comprobando si se ha pasado una entrada manual llamada
foo
o si se ha establecido un secreto del flujo de trabajo llamadoFOO
. Si cualquiera de las dos condiciones es verdadera, establecemos la variable de entornoFOO
de forma dinámica utilizando el archivo$GITHUB_ENV
. Por último, mostramos el valor de$FOO
para verificar que se haya establecido correctamente.