Help me een GitHub Actions workflow maken die afhankelijkheidsupdates optimaliseert in mijn CI/CD-pipeline.
description
Deze workflow bespaart tijd door afhankelijkheidsbeheer te automatiseren, vermindert beveiligingsrisico's en zorgt ervoor dat je project de nieuwste functies en fixes gebruikt.
prompt
try_prompt
Ik heb hulp nodig bij het ontwerpen van een GitHub Actions workflow die automatisch controleert op verouderde afhankelijkheden en updates toepast op basi ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een GitHub Actions workflow die automatisch controleert op verouderde afhankelijkheden in een Node.js-project, deze bijwerkt volgens een automatische strategie, en meldingen stuurt naar Slack:
```yaml
name: Dependabot en Dependency Updates
on:
schedule:
- cron: '0 0 * * *' # Elke dag om middernacht
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
jobs:
check-dependencies:
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 aan indien nodig
- name: Install dependencies
run: npm install
- name: Check op verouderde dependencies
run: |
npm outdated --json > outdated.json
if [ -s outdated.json ]; then
echo "Er zijn verouderde dependencies."
# U kunt hier verdere logica toevoegen om updates te bepalen
else
echo "Alle dependencies zijn up-to-date."
fi
- name: Werk dependencies bij automatisch
run: |
npm update
if: always()
- name: Commit en push updates
run: |
if [ "$(git status --porcelain)" != "" ]; then
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git checkout -b dependency-update-$(date +%Y%m%d%H%M%S)
git add package.json package-lock.json
git commit -m "Automatische dependency update"
git push origin HEAD
else
echo "Geen updates om te committen."
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Verstuur Slack melding
if: always()
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
fields: repo, commit, message
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
```
**Belangrijke punten:**
- Vervang `${{ secrets.SLACK_WEBHOOK_URL }}` door je eigen Slack webhook-URL, die je in de secrets van je repository kunt zetten.
- Je kunt de cron-schedule aanpassen aan je behoeften.
- Voor meer controle over welke afhankelijkheden automatisch worden bijgewerkt, kun je overwegen Dependabot in te schakelen of script-uitbreidingen toe te voegen.
- Deze workflow voert dagelijks een controle uit en push automatisch updates, afhankelijk van de afhankelijkheden die verouderd zijn.
Wil je nog specifieke criteria toevoegen of de workflow verder aanpassen?
provider: deepseek
model: deepseek-chat
Hier is een GitHub Actions workflow voor het automatisch bijwerken van Node.js afhankelijkheden met Slack-notificaties:
```yaml
name: Dependency Updates
on:
schedule:
# Voer dagelijks uit om 06:00 UTC
- cron: '0 6 * * *'
workflow_dispatch: # Optioneel handmatig starten
jobs:
dependency-update:
runs-on: ubuntu-latest
steps:
- name: Repository uitchecken
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
- name: Node.js instellen
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
- name: Afhankelijkheden bijwerken
id: update
run: |
# Installeer en gebruik npm-check-updates
npx npm-check-updates --upgrade --target minor
# Controleer of package.json is gewijzigd
if git diff --name-only | grep -q package.json; then
echo "changes_detected=true" >> $GITHUB_OUTPUT
# Installeer bijgewerkte dependencies
npm install
# Voer tests uit om compatibiliteit te verifiëren
npm test
else
echo "changes_detected=false" >> $GITHUB_OUTPUT
fi
- name: Pull Request aanmaken bij updates
if: steps.update.outputs.changes_detected == 'true'
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git checkout -b dependencies/auto-update-$(date +%Y%m%d)
git add package.json package-lock.json
git commit -m "chore: automatische dependency updates"
git push origin dependencies/auto-update-$(date +%Y%m%d)
# Maak PR aan met GitHub CLI
gh pr create \
--title "Automatische Dependency Updates $(date +%Y-%m-%d)" \
--body "Deze PR bevat automatisch bijgewerkte dependencies. Controleer de wijzigingen voor merging." \
--base main \
--head dependencies/auto-update-$(date +%Y%m%d)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Slack notificatie bij updates
if: steps.update.outputs.changes_detected == 'true'
uses: slackapi/slack-github-action@v1.24.0
with:
payload: |
{
"text": "🔔 Nieuwe dependency updates beschikbaar",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "🚀 *Automatische Dependency Updates*\nEr zijn nieuwe dependency updates gevonden en een PR is aangemaakt."
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Repository:*\n${{ github.repository }}"
},
{
"type": "mrkdwn",
"text": "*Branch:*\ndependencies/auto-update-$(date +%Y%m%d)"
}
]
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
- name: Slack notificatie bij geen updates
if: steps.update.outputs.changes_detected == 'false'
uses: slackapi/slack-github-action@v1.24.0
with:
payload: |
{
"text": "✅ Geen nieuwe dependency updates",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "✅ *Dependency Check Voltooid*\nAlle dependencies zijn up-to-date."
}
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
```
## Benodigde instellingen:
### 1. Repository Secrets configureren:
- `SLACK_WEBHOOK_URL`: Webhook URL van je Slack kanaal
### 2. Aanvullende aanpassingen:
**Voor major updates:**
```yaml
npx npm-check-updates --upgrade --target major
```
**Alleen patch updates:**
```yaml
npx npm-check-updates --upgrade --target patch
```
**Specifieke packages uitsluiten:**
```yaml
npx npm-check-updates --upgrade --target minor --reject "package1,package2"
```
### 3. Permissies:
Zorg dat `GITHUB_TOKEN` voldoende rechten heeft:
- `contents: write` (voor PR aanmaken)
- `pull-requests: write`
Deze workflow controleert dagelijks op updates, past minor updates automatisch toe, voert tests uit, en verstuurt Slack-notificaties bij wijzigingen.

