slogan3

Maak een GitHub Actions Workflow voor Geautomatiseerde Omgevingsspecifieke Configuratie

description

Helpt bij het automatiseren en centraliseren van omgevingsspecifieke configuratie binnen GitHub Actions workflows, waardoor handmatige fouten verminderen en de consistentie van deployments over verschillende omgevingen verbetert.

prompt

Help me een GitHub Actions workflow te maken die automatisch omgevingsspecifieke configuraties toepast tijdens het CI/CD proces. Projecttype: <voer je projecttype in, bijvoorbeeld Node.js, Python>. Omgevingen om te ondersteunen: <noem de deployment omgeving ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een uitgebreide GitHub Actions workflow die automatisch omgevingsspecifieke configuraties toepast op basis van de branch of tag. Deze workflow ondersteunt development, staging en productie omgevingen en kopieert het juiste .env-bestand naar een standaard locatie voor je buildproces. ```yaml name: CI on: push: branches: - main - staging - production jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set environment id: env run: | if [[ "${GITHUB_REF}" == "refs/heads/main" ]]; then echo "ENVIRONMENT=development" >> $GITHUB_ENV echo "ENV_FILE=.env.dev" >> $GITHUB_ENV elif [[ "${GITHUB_REF}" == "refs/heads/staging" ]]; then echo "ENVIRONMENT=staging" >> $GITHUB_ENV echo "ENV_FILE=.env.staging" >> $GITHUB_ENV elif [[ "${GITHUB_REF}" == "refs/heads/production" ]]; then echo "ENVIRONMENT=production" >> $GITHUB_ENV echo "ENV_FILE=.env.prod" >> $GITHUB_ENV else echo "Onbekende branch, standaard omgeving wordt gebruikt." echo "ENVIRONMENT=development" >> $GITHUB_ENV echo "ENV_FILE=.env.dev" >> $GITHUB_ENV fi - name: Kopieer omgevingsconfiguratie run: | cp ${{ env.ENV_FILE }} .env - name: Install dependencies run: npm install - name: Build run: npm run build ``` **Uitleg:** - De workflow wordt getriggerd bij pushes naar de `main`, `staging` en `production` branches. - De stap "Set environment" bepaalt welke omgeving actief is op basis van de branch en stelt de variabelen `ENVIRONMENT` en `ENV_FILE` in. - Daarna wordt het juiste `.env`-bestand gekopieerd naar de hoofdmap (of een andere locatie afhankelijk van je projectstructuur) zodat je buildproces de juiste configuratie gebruikt. - Vervolgens worden dependencies geïnstalleerd en de build uitgevoerd. **Aanpassingen:** - Pas de branchnamen aan indien je andere namen gebruikt. - Indien je `.env`-bestanden zich op een andere locatie bevinden of je een ander pad gebruikt, pas de `cp`-commando aan. - Je kunt deze workflow uitbreiden met deployment-stappen afhankelijk van je deploymentproces. Heeft je nog verdere wensen of vragen?
provider: deepseek
model: deepseek-chat
Zeker, hier is een aangepaste GitHub Actions workflow die automatisch omgevingsspecifieke configuraties toepast voor jouw Node.js project: ```yaml name: CI/CD on: [push] jobs: build: runs-on: ubuntu-latest strategy: matrix: include: - environment: development env-file: .env.dev - environment: staging env-file: .env.staging - environment: production env-file: .env.prod steps: - uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v2 with: node-version: '18' cache: 'npm' - name: Install dependencies run: npm ci - name: Copy environment file run: cp ${{ matrix.env-file }} .env - name: Build application run: npm run build - name: Run tests run: npm test - name: Deploy to environment if: matrix.environment != 'development' run: echo "Implementeer hier jouw deploy script voor ${{ matrix.environment }}" # Voorbeeld: npm run deploy:${{ matrix.environment }} ``` **Belangrijke aanpassingen en uitleg:** 1. **Matrix Strategy**: De workflow gebruikt een matrix om parallel builds voor alle omgevingen uit te voeren 2. **Omgevingsspecifieke bestanden**: Elke omgeving gebruikt zijn eigen .env bestand 3. **Conditionele deploy**: Alleen staging en productie worden gedeployed (development is alleen build/test) 4. **Node.js setup**: Toegevoegd voor betere caching en versiebeheer **Aanvullende aanbevelingen:** 1. **Secrets voor productie**: ```yaml - name: Deploy to production if: matrix.environment == 'production' run: | echo "${{ secrets.PROD_DEPLOY_KEY }}" > deploy_key chmod 600 deploy_key # Voeg hier je deploy commando toe ``` 2. **Omgevingsspecifieke triggers**: ```yaml on: push: branches: [ main, develop ] pull_request: branches: [ main ] ``` 3. **Voor .env bestanden structuur**: ``` # .env.dev NODE_ENV=development API_URL=http://localhost:3000 # .env.staging NODE_ENV=staging API_URL=https://staging.api.com # .env.prod NODE_ENV=production API_URL=https://api.com ``` Deze workflow zorgt ervoor dat elke omgeving de juiste configuratie krijgt tijdens het CI/CD proces!