GitHub Action
Descarrega secrets a fitxers .env durant un flux de GitHub Actions.
Configuració de GitHub Action
La GitHub Action preconstruïda d'Envilder obté secrets d'AWS SSM o Azure Key Vault en fitxers .env durant el teu workflow CI/CD. Utilitza l'etiqueta publicada macalbert/envilder/github-action@v0; el projecte consumidor no necessita cap pas de compilació.
Prerequisits
- AWS: Configura credencials amb aws-actions/configure-aws-credentials
- Azure: Configura credencials amb azure/login
- Un envilder.json al teu repositori
La GitHub Action només suporta el mode pull (sense push).
Exemple bàsic de workflow
.github/workflows/deploy.ymlyaml
name: Deploy Application
on:
push:
branches: [main]
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v5
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: us-east-1
- name: Pull Secrets from AWS SSM
uses: macalbert/envilder/github-action@v0
with:
map-file: config/envilder.json
env-file: .env
- uses: actions/setup-node@v6
with:
node-version: "22.x"
- run: pnpm install --frozen-lockfile
- run: pnpm build
- run: pnpm deployWorkflow d'Azure Key Vault
.github/workflows/deploy-azure.ymlyaml
name: Deploy with Azure Key Vault
on:
push:
branches: [main]
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v5
- name: Azure Login
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Pull Secrets from Azure Key Vault
uses: macalbert/envilder/github-action@v0
with:
map-file: config/envilder.json
env-file: .env
provider: azure
vault-url: https://my-vault.vault.azure.net
- uses: actions/setup-node@v6
with:
node-version: "22.x"
- run: pnpm install --frozen-lockfile
- run: pnpm build
- run: pnpm deployWorkflow multi-entorn
.github/workflows/deploy-env.ymlyaml
name: Deploy to Environment
on:
workflow_dispatch:
inputs:
environment:
description: 'Target environment'
required: true
type: choice
options: [dev, staging, production]
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-24.04
environment: ${{ inputs.environment }}
steps:
- uses: actions/checkout@v5
- uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: us-east-1
- name: Pull ${{ inputs.environment }} secrets
uses: macalbert/envilder/github-action@v0
with:
map-file: config/${{ inputs.environment }}/envilder.json
env-file: .env
- uses: actions/setup-node@v6
with:
node-version: "22.x"
- run: pnpm install --frozen-lockfile
- run: pnpm build
- run: pnpm deployInputs i outputs de l'Action
Inputs
| Input | Requerit | Per defecte | Descripció |
|---|---|---|---|
map-file | Sí | - | Ruta al fitxer JSON de mapeig |
env-file | Sí | - | Ruta al fitxer .env a generar |
provider | No | aws | aws o azure |
vault-url | No | - | URL d'Azure Key Vault |
Outputs
| Output | Descripció |
|---|---|
env-file-path | Ruta al fitxer .env generat |