slogan3

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
disclaimerOnPageApi image_legal_disclaimer...

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`.