slogan3

Ontwerp een GitHub Actions Workflow voor geautomatiseerde rollback bij falende implementaties

description

Met deze prompt kan de gebruiker een geavanceerde GitHub Actions workflow ontwikkelen die automatisch terugdraait bij foutieve implementaties. Dit vermindert downtime, verhoogt de stabiliteit van productieomgevingen en zorgt voor betrouwbare deploymentprocessen. Het biedt een praktische oplossing die verder gaat dan standaard deployment workflows door automatische herstelmechanismen te integreren.

prompt

Help me een GitHub Actions workflow te ontwerpen die automatisch een rollback uitvoert bij falende implementaties om de beschikbaarheid van mijn applicatie te garanderen. Huidige workflow configurati ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een aangepaste GitHub Actions workflow die automatisch een rollback uitvoert als de implementatie faalt. De workflow controleert de exit-code van het deploy-script en voert, indien nodig, een rollback uit. ```yaml name: Node.js CI met Rollback on: push: branches: - main # of de relevante branch jobs: build-en-deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v2 with: node-version: '14' - run: npm install - run: npm test - name: Deploy id: deploy run: | ./deploy.sh continue-on-error: true # Zorgt dat de workflow niet stopt bij een fout - name: Check Deploy Result id: deploy_check run: | if [ "${{ steps.deploy.outcome }}" != "success" ]; then echo "Deploy mislukt, voer rollback uit..." echo "rollback_needed=true" >> $GITHUB_OUTPUT else echo "Deploy succesvol." echo "rollback_needed=false" >> $GITHUB_OUTPUT fi - name: Rollback uitvoeren if: steps.deploy_check.outputs.rollback_needed == 'true' run: | echo "Start rollback..." # Voeg hier je rollback commando's toe ./rollback.sh ``` **Uitleg:** - `continue-on-error: true` zorgt dat de workflow doorgaat zelfs als `./deploy.sh` faalt. - De stap `Check Deploy Result` controleert of de deploy geslaagd is door de outcome van de deploy-stap te bekijken. - Als de deploy faalt, wordt de output `rollback_needed=true`. - De rollback wordt alleen uitgevoerd als de deploy faalde, via de `if`-voorwaarde in de laatste stap. **Belangrijk:** - Zorg dat je `rollback.sh` script klaar hebt staan en correct werkt om je applicatie terug te zetten naar de vorige stabiele staat. - Pas de branch name aan indien nodig. - Test deze workflow goed in een staging- of testomgeving voordat je deze in productie gebruikt.
provider: deepseek
model: deepseek-chat
Hier is een aangepaste GitHub Actions workflow met automatische rollback-functionaliteit: ```yaml name: Node.js CI met Rollback on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v2 with: node-version: '14' - run: npm install - run: npm test deploy: runs-on: ubuntu-latest needs: build environment: production steps: - uses: actions/checkout@v2 - name: Maak backup van huidige versie run: | # Voeg hier je backup commando's toe voor AWS echo "Backup maken van huidige deployment" # Voorbeeld: aws s3 sync current-deployment/ backup-bucket/backup-$(date +%Y%m%d-%H%M%S)/ - name: Implementeer nieuwe versie id: deploy run: | set +e ./deploy.sh DEPLOY_EXIT_CODE=$? echo "exit_code=$DEPLOY_EXIT_CODE" >> $GITHUB_OUTPUT if [ $DEPLOY_EXIT_CODE -ne 0 ]; then exit 1 fi env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Rollback bij falende implementatie if: steps.deploy.outcome == 'failure' run: | echo "Implementatie gefaald - Uitvoeren rollback..." # Voeg hier je rollback script toe voor AWS # Voorbeeld: ./rollback.sh of aws commando's echo "Rollback voltooid - Teruggekeerd naar vorige stabiele versie" env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} # Optioneel: Health check na implementatie - name: Health check if: steps.deploy.outcome == 'success' run: | echo "Health check uitvoeren..." # Voeg health check commando's toe # curl -f https://jouw-app.com/health || exit 1 notify: runs-on: ubuntu-latest needs: deploy if: always() steps: - name: Notificatie sturen run: | if [ "${{ needs.deploy.result }}" == "success" ]; then echo "Implementatie succesvol" else echo "Implementatie gefaald - Rollback uitgevoerd" fi ``` **Belangrijke aanpassingen:** - Gescheiden `build` en `deploy` jobs - Backup stap voorafgaand aan implementatie - Rollback wordt automatisch uitgevoerd bij exit code ≠ 0 - Environment configuratie voor betere tracking - Optionele health check en notificaties **Vereiste aanpassingen:** 1. Vul de AWS backup/rollback commando's aan met je specifieke implementatie 2. Configureer AWS credentials in GitHub Secrets 3. Pas de health check URL aan naar je applicatie 4. Implementeer een betrouwbaar backup/rollback mechanisme voor AWS Let op: Zorg dat je rollback-script betrouwbaar is en getest is voordat je deze workflow in productie gebruikt.