Cómo configurar variables de entorno para múltiples entornos de implementación mientras se utilizan acciones de GitHub.
Necesito usar acciones de Github para implementar mi pila en muchos entornos, por ejemplo, development
y production
. Mi implementación previa ya no funcionará y aunque tengo un nuevo flujo de trabajo funcionando, configurar variables de entorno para múltiples entornos parece repetitivo y me hace pensar que debe haber una mejor manera.
Lo que tenía antes:
jobs:
build-and-deploy:
name: Crear el contenedor e implementar
runs-on: ubuntu-latest
steps:
- name: Establecer la variable de entorno para desarrollo
if: ${{ !endsWith(github.ref, '/main') }}
run: |
echo "GCP_PROJECT=my-project-dev" >> $GITHUB_ENV
echo "NODE_ENV=development" >> $GITHUB_ENV
...
- name: Establecer la variable de entorno para producción
if: ${{ endsWith(github.ref, '/main') }}
run: |
echo "GCP_PROJECT=my-project-prod" >> $GITHUB_ENV
echo "NODE_ENV=production" >> $GITHUB_ENV
...
Lo que tengo ahora:
jobs:
build-and-deploy:
name: Crear el contenedor e implementar
runs-on: ubuntu-latest
env:
GCP_PROJECT: ${{ (!endsWith(github.ref, '/main') && 'my-project-dev') || 'my-project-prod' }}
NODE_ENV: ${{ (!endsWith(github.ref, '/main') && 'development') || 'production' }}
steps:
...
Obviamente, no parece tan malo en el ejemplo, pero para muchas más variables de entorno, {!endsWith(github.ref, '/main') && 'dev-value') || 'prod-value'}
parece ruidoso y sucio.
Entonces, ¿cuál sería la forma adecuada de hacer esto?
davy.ai
Una manera de potencialmente hacer esto más limpio y menos repetitivo es utilizar la Estrategia de Matriz de GitHub Actions. La estrategia de matriz te permite definir múltiples variables con diferentes valores, y luego ejecutará el trabajo varias veces con cada combinación de esos valores.
Por ejemplo, podrías definir una matriz para entornos de implementación de esta manera:
Luego puedes usar estos valores en tus pasos de esta manera:
Esto ejecutaría el trabajo dos veces, una vez con
env: development
ygcp_project: my-project-dev
, y luego nuevamente conenv: production
ygcp_project: my-project-prod
.De esta manera, solo tienes que definir las variables una vez en la matriz, y automáticamente utilizará los valores correctos para cada entorno de implementación.
Por supuesto, necesitarías modificar esto para adaptarlo a tu caso de uso específico, pero utilizar la estrategia de matriz puede ser una buena manera de simplificar y optimizar tu flujo de trabajo de GitHub Actions.