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
tags
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