slogan3

Ontwerp een GitHub Actions Workflow voor Geautomatiseerde Release Notificaties

description

Met deze prompt kun je een workflow ontwerpen die automatisch duidelijke en consistente release notities genereert en verspreidt, waardoor de communicatie rond deployments verbetert en handmatige taken worden verminderd. Dit bespaart tijd en voorkomt fouten die kunnen optreden bij handmatige documentatie van releases.

prompt

Help me een GitHub Actions workflow te ontwerpen die automatisch release notities genereert en verstuurt na elke succesvolle deployment. Projecttype: <voer je projecttype in, bijvoorbeeld Node.js, Python>. Formaat van release notities: <b ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorstel voor een aanvullende GitHub Actions workflow die automatisch release notities genereert en verstuurt naar Slack en e-mail na elke succesvolle deployment. Deze workflow wordt geactiveerd na de bestaande 'CI'-workflow en gaat ervan uit dat je al beschikt over een manier om een deployment te triggeren en dat de deployment succesvol is. ### Stap 1: Voeg secrets toe aan je GitHub repository - `SLACK_WEBHOOK_URL`: Webhook URL voor Slack - `EMAIL_SMTP_SERVER`: SMTP server adres - `EMAIL_USERNAME`: Gebruikersnaam voor SMTP - `EMAIL_PASSWORD`: Wachtwoord voor SMTP - `RELEASE_EMAIL`: E-mailadres waar de release notities naartoe gestuurd moeten worden ### Stap 2: Workflow bestand (`release-notes.yml`) toevoegen ```yaml name: Release Notities en Distributie on: workflow_run: workflows: ["CI"] types: - completed branches: - main # Alleen uitvoeren na succesvolle runs if: ${{ github.event.workflow_run.conclusion == 'success' }} jobs: generate_release_notes: name: Genereer Release Notities runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Installeer GitHub CLI run: sudo apt-get install gh - name: Haal commit berichten op id: get_commits run: | git fetch --tags # verkrijg commits sinds laatste tag LAST_TAG=$(git describe --tags --abbrev=0) COMMITS=$(git log $LAST_TAG..HEAD --pretty=format:"- %s (%h)") echo "commits<<EOF" >> $GITHUB_OUTPUT echo "$COMMITS" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - name: Genereer Markdown release notities id: create_release_notes run: | echo "## Release Notities" > release_notes.md echo "" >> release_notes.md echo "${{ steps.get_commits.outputs.commits }}" >> release_notes.md - name: Upload release notities als artefact uses: actions/upload-artifact@v2 with: name: release-notities path: release_notes.md verstuur_notities: needs: generate_release_notes runs-on: ubuntu-latest steps: - name: Download release notities uses: actions/download-artifact@v2 with: name: release-notities - name: Lees release notities in id: read_notes run: | RELEASE_NOTES=$(cat release_notes.md) echo "release_notes<<EOF" >> $GITHUB_OUTPUT echo "$RELEASE_NOTES" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - name: Verstuur via Slack env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} run: | curl -X POST -H 'Content-type: application/json' --data \ '{"text": "Nieuwe Release Notities:\n'"${{ steps.read_notes.outputs.release_notes }}"'"}' \ $SLACK_WEBHOOK_URL - name: Verstuur via e-mail env: SMTP_SERVER: ${{ secrets.EMAIL_SMTP_SERVER }} SMTP_USERNAME: ${{ secrets.EMAIL_USERNAME }} SMTP_PASSWORD: ${{ secrets.EMAIL_PASSWORD }} run: | # Gebruik een eenvoudige mail command, bijvoorbeeld via sendmail of swaks echo -e "Subject: Release Notities\n\n${{ steps.read_notes.outputs.release_notes }}" | \ sendmail -S $SMTP_SERVER -au$SMTP_USERNAME -ap$SMTP_PASSWORD ${{ secrets.RELEASE_EMAIL }} ``` ### Opmerkingen: - Deze workflow wordt getriggerd zodra de 'CI'-workflow succesvol is afgerond op de `main` branch. - Het genereert release notities gebaseerd op commitberichten sinds de laatste tag. - De notities worden verstuurd naar Slack via een webhook en per e-mail. - Pas indien nodig de stappen aan afhankelijk van je serverconfiguratie en voorkeur voor e-mail versturen. ### Extra: - Overweeg om automatische tagging en versiebeheer toe te voegen voor volledige release management. - Test deze workflow eerst in een testomgeving om zeker te zijn dat alles correct werkt. Heeft u nog verdere wensen of vragen?
provider: deepseek
model: deepseek-chat
Hier is een GitHub Actions workflow die automatisch releasenotities genereert en verstuurt na een succesvolle deployment: ```yaml name: CI on: push: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Install dependencies run: npm install - name: Run tests run: npm test - name: Deploy run: ./deploy.sh - name: Generate release notes id: release_notes run: | echo "## Release Notities - $(date +'%Y-%m-%d')" > release_notes.md echo "" >> release_notes.md echo "### Laatste wijzigingen:" >> release_notes.md echo "" >> release_notes.md git log --oneline --format="- %s" HEAD~1..HEAD >> release_notes.md echo "" >> release_notes.md echo "**Deployment voltooid om:** $(date +'%H:%M:%S')" >> release_notes.md - name: Upload release notes uses: actions/upload-artifact@v4 with: name: release-notes path: release_notes.md notify: runs-on: ubuntu-latest needs: build if: success() steps: - name: Download release notes uses: actions/download-artifact@v4 with: name: release-notes - name: Read release notes id: notes run: | NOTES_CONTENT=$(cat release_notes.md) NOTES_CONTENT_ESCAPED=$(echo "$NOTES_CONTENT" | sed ':a;N;$!ba;s/\n/\\n/g') echo "notes<<EOF" >> $GITHUB_OUTPUT echo "$NOTES_CONTENT_ESCAPED" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - name: Send to Slack uses: slackapi/slack-github-action@v1.24.0 with: channel-id: 'C12345678' # Vervang met je Slack kanaal ID slack-message: | 🚀 Nieuwe deployment voltooid! ${{ steps.notes.outputs.notes }} env: SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} - name: Send email uses: dawidd6/action-send-mail@v3 with: server_address: smtp.gmail.com server_port: 587 username: ${{ secrets.EMAIL_USERNAME }} password: ${{ secrets.EMAIL_PASSWORD }} subject: "Nieuwe Deployment - $(date +'%Y-%m-%d')" body: | Er is een nieuwe deployment uitgevoerd. ${{ steps.notes.outputs.notes }} Groeten, Het Development Team to: ${{ secrets.EMAIL_RECIPIENTS }} from: "Deployment Bot <noreply@example.com>" ``` **Benodigde secrets die je moet instellen in GitHub:** 1. **SLACK_BOT_TOKEN** - Slack bot token 2. **EMAIL_USERNAME** - E-mail adres voor SMTP 3. **EMAIL_PASSWORD** - Wachtwoord voor SMTP 4. **EMAIL_RECIPIENTS** - Ontvangers (komma gescheiden) **Aanvullende configuratie:** Voor Slack: - Maak een Slack app aan in je workspace - Voeg de bot toe aan het gewenste kanaal - Gebruik het Bot User OAuth Token Voor e-mail: - Pas de SMTP server instellingen aan naar je e-mail provider - Voor Gmail: gebruik een app-specifiek wachtwoord De workflow genereert Markdown notities met: - Datum en tijd van deployment - Laatste commit berichten - Automatische distributie naar Slack en e-mail