Help me een GitHub Actions workflow maken voor geautomatiseerd testen en feedbackintegratie
description
Automatisering van testen en feedback vermindert handmatig werk, waarborgt codekwaliteit en verbetert de samenwerking in het team door directe inzichten in codewijzigingen te bieden.
prompt
try_prompt
Ik heb hulp nodig bij het maken van een GitHub Actions workflow die automatisch tests uitvoert en feedback geeft aan mijn team. Projecttype: {{projec ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een GitHub Actions workflow die automatisch tests uitvoert met Jest voor een Node.js-project en de resultaten via Slack deelt:
```yaml
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '16' # Pas de Node.js versie aan indien nodig
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
- name: Send Slack notification
if: always()
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
run: |
if [ $? -eq 0 ]; then
STATUS="success"
MESSAGE="✅ Tests geslaagd voor commit ${GITHUB_SHA}"
else
STATUS="failure"
MESSAGE="❌ Tests mislukt voor commit ${GITHUB_SHA}"
fi
curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"${MESSAGE}\"}" $SLACK_WEBHOOK_URL
```
### Uitleg:
- De workflow wordt geactiveerd bij push en pull requests naar de `main`-branch.
- Het checkoutten van de repository en het instellen van Node.js.
- Dependencies worden geïnstalleerd en tests uitgevoerd met `npm test`.
- Na het testen wordt altijd een Slack-bericht gestuurd, ongeacht of de tests geslaagd of gefaald hebben.
- Zorg dat je een Slack Webhook URL hebt en deze toevoegt aan je repository secrets onder de naam `SLACK_WEBHOOK_URL`.
Wil je dat ik de workflow verder aanpas of uitbreid?
provider: deepseek
model: deepseek-chat
Hier is een complete GitHub Actions workflow voor jouw Node.js project die tests uitvoert met Jest en resultaten naar Slack stuurt:
```yaml
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run tests with Jest
id: tests
run: |
npm test -- --coverage --testLocationInResults --json 2>/dev/null > test-results.json || echo "Tests completed with exit code: $?"
echo "exit_code=$?" >> $GITHUB_OUTPUT
- name: Process test results and send to Slack
if: always()
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
channel: '#jouw-kanaal' # Vervang met jouw Slack kanaal
text: |
*Test Resultaten voor ${{ github.event.repository.name }}*
• Branch: ${{ github.ref }}
• Commit: ${{ github.sha }}
• Auteur: ${{ github.actor }}
${{ steps.tests.outputs.exit_code == 0 && '✅ Alle tests geslaagd!' || '❌ Sommige tests gefaald' }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
```
## Vereiste setup:
### 1. Slack Webhook configureren:
- Ga naar https://api.slack.com/apps
- Maak een nieuwe app aan of selecteer bestaande
- Ga naar "Incoming Webhooks" en activeer deze
- Voeg een nieuwe webhook toe aan je gewenste kanaal
- Kopieer de webhook URL
### 2. GitHub Secrets instellen:
- Ga naar je GitHub repository → Settings → Secrets and variables → Actions
- Voeg een nieuwe secret toe:
- Name: `SLACK_WEBHOOK_URL`
- Value: Je Slack webhook URL
### 3. Aanvullende verbeteringen (optioneel):
```yaml
# Voeg deze step toe na de test stap voor gedetailleerde coverage
- name: Test coverage report
if: always()
run: |
if [ -f "test-results.json" ]; then
TOTAL_TESTS=$(jq '.numTotalTests' test-results.json)
PASSED_TESTS=$(jq '.numPassedTests' test-results.json)
COVERAGE=$(npm test -- --coverage --json 2>/dev/null | jq -r '.coverage | .["total"] | .["lines"] | .pct' || echo "N/A")
echo "Tests: $PASSED_TESTS/$TOTAL_TESTS geslaagd"
echo "Coverage: $COVERAGE%"
fi
```
Vergeet niet om `#jouw-kanaal` te vervangen door het daadwerkelijke Slack kanaal en zorg dat je Jest correct is geconfigureerd in je `package.json`.

