Ontwerp een GitHub Actions Workflow voor Geautomatiseerde Integratie van Externe API's
description
Met deze prompt kun je een geavanceerde GitHub Actions workflow ontwerpen die externe API's integreert voor dynamische en contextuele aanpassingen binnen je CI/CD pipeline. Dit verhoogt de flexibiliteit en automatisering, vermindert handmatige interventies en maakt je deploymentprocessen adaptiever dan traditionele workflows.
prompt
Help me een GitHub Actions workflow te ontwerpen die externe API's integreert voor dynamische gegevensverwerking binnen mijn CI/CD pipeline. Projecttype: <voer je projecttype in, bijvoorbeeld Node.js, Python>. API's om te integreren: ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een aangepaste GitHub Actions workflow die de Slack API en AWS Parameter Store integreert om dynamisch gegevens te verwerken en notificaties te versturen bij falende tests:
```yaml
name: CI
on:
push:
branches:
- main
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14' # of een andere gewenste versie
- name: Cache node modules
uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Fetch Slack Webhook URL from AWS Parameter Store
id: get-slack-url
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: jouw-aws-regio
- name: Retrieve Slack Webhook URL
run: |
SLACK_WEBHOOK_URL=$(aws ssm get-parameter --name "/slack/webhook_url" --with-decryption --query "Parameter.Value" --output text)
echo "SLACK_WEBHOOK_URL=$SLACK_WEBHOOK_URL" >> $GITHUB_OUTPUT
notify:
needs: build
if: failure() # alleen uitvoeren bij test falen
runs-on: ubuntu-latest
steps:
- name: Fetch Slack Webhook URL
id: slack
run: echo "SLACK_WEBHOOK_URL=${{ needs.get-slack-url.outputs.SLACK_WEBHOOK_URL }}" >> $GITHUB_OUTPUT
- name: Send Slack notification
env:
SLACK_WEBHOOK_URL: ${{ steps.slack.outputs.SLACK_WEBHOOK_URL }}
run: |
curl -X POST -H 'Content-type: application/json' --data '{
"text": "🚨 Tests zijn mislukt in commit $GITHUB_SHA. Bekijk de details in de CI logs."
}' $SLACK_WEBHOOK_URL
```
**Uitleg:**
- De workflow voert eerst de build en tests uit.
- Na de tests wordt de Slack Webhook URL dynamisch opgehaald uit AWS Parameter Store met behulp van de AWS CLI.
- Bij een testfout wordt een notificatie naar Slack gestuurd met behulp van de opgehaalde webhook URL.
- Zorg dat je de AWS-credentials (`AWS_ACCESS_KEY_ID` en `AWS_SECRET_ACCESS_KEY`) toevoegt aan je repository secrets.
- Plaats de Slack Webhook URL in AWS Parameter Store onder de naam `/slack/webhook_url`, versleuteld.
Wil je nog verdere aanpassingen of uitbreidingen?
provider: deepseek
model: deepseek-chat
Hier is een aangepaste GitHub Actions workflow voor je Node.js project die Slack notificaties verstuurt bij falende tests en gebruikmaakt van AWS Parameter Store voor geheimenbeheer:
```yaml
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Gebruik Node.js
uses: actions/setup-node@v2
with:
node-version: '18'
cache: 'npm'
- name: Installeer dependencies
run: npm ci
- name: Build
run: npm run build
- name: Voer tests uit
id: tests
run: npm test
continue-on-error: true
- name: Haal Slack Webhook URL op van AWS Parameter Store
if: steps.tests.outcome == 'failure'
uses: aws-actions/aws-ssm-get-parameters@v1
with:
names: |
/my-app/slack-webhook-url
with-decryption: true
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: eu-west-1
- name: Verstuur Slack notificatie bij gefaalde tests
if: steps.tests.outcome == 'failure'
uses: slackapi/slack-github-action@v1.23.0
with:
payload: |
{
"text": "❌ Tests gefaald in ${{ github.repository }}",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "❌ *Tests gefaald* \n*Repository:* ${{ github.repository }}\n*Branch:* ${{ github.ref }}\n*Commit:* ${{ github.sha }}\n*Workflow:* ${{ github.workflow }}"
}
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "Bekijk Workflow"
},
"url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
}
]
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ env.SLACK_WEBHOOK_URL }}
# Optionele job voor succesmeldingen
notify-success:
runs-on: ubuntu-latest
needs: build
if: always() && needs.build.result == 'success'
steps:
- name: Haal Slack Webhook URL op
uses: aws-actions/aws-ssm-get-parameters@v1
with:
names: |
/my-app/slack-webhook-url
with-decryption: true
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: eu-west-1
- name: Verstuur succes notificatie
uses: slackapi/slack-github-action@v1.23.0
with:
payload: |
{
"text": "✅ Build succesvol in ${{ github.repository }}",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "✅ *Build succesvol* \n*Repository:* ${{ github.repository }}\n*Branch:* ${{ github.ref }}\n*Workflow:* ${{ github.workflow }}"
}
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ env.SLACK_WEBHOOK_URL }}
```
**Benodigde repository secrets die je moet instellen in GitHub:**
- `AWS_ACCESS_KEY_ID` - AWS toegangssleutel
- `AWS_SECRET_ACCESS_KEY` - AWS geheime sleutel
**AWS Parameter Store configuratie:**
- Sla je Slack webhook URL op in AWS Parameter Store als `/my-app/slack-webhook-url`
- Pas de parameter naam aan naar je eigen voorkeur
**Belangrijke aanpassingen:**
1. Vervang `eu-west-1` met je AWS regio
2. Pas de parameter naam `/my-app/slack-webhook-url` aan naar je eigen structuur
3. Zorg dat je IAM gebruiker de juiste rechten heeft voor AWS Systems Manager Parameter Store
Deze workflow zal automatisch notificaties versturen naar Slack wanneer tests falen, waarbij de gevoelige Slack webhook URL veilig wordt opgehaald uit AWS Parameter Store.