chore: Renovate zentral in ci-templates
Abhaengigkeits-Updates laufen an einer Stelle statt in jedem Repo einzeln. Der woechentliche Lauf liest die Repository-Liste im Workflow und legt die PRs jeweils dort an. - renovate-basis.json: Minor und Patch gebuendelt in einen PR pro Woche, Major nur nach Freigabe ueber das Dashboard, Sicherheits-Updates am Zeitplan vorbei. - renovate.yml: montags 04:00 UTC, dazu workflow_dispatch mit dry-run. Node 24, weil Renovate 44 das verlangt. Braucht das Repo-Secret RENOVATE_TOKEN (Gitea-Token mit Schreibrecht auf die gelisteten Repositories).
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# Renovate fuer die Node-Projekte. Laeuft an einer Stelle statt in jedem Repo einzeln:
|
||||
# der Lauf liest die Repository-Liste unten und legt die PRs jeweils dort an.
|
||||
#
|
||||
# Voraussetzung: Repo-Secret RENOVATE_TOKEN — ein Gitea-Zugriffstoken mit Schreibrecht
|
||||
# auf die gelisteten Repositories (Bereiche: repository, issue, pull request). Ohne das
|
||||
# Token kann Renovate keine Branches schieben und bricht mit 401 ab.
|
||||
#
|
||||
# Ein Projekt nimmt teil, sobald es eine renovate.json mit
|
||||
# { "extends": ["local>roland/ci-templates:renovate-basis"] }
|
||||
# hat UND hier in RENOVATE_REPOSITORIES steht.
|
||||
name: renovate
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 4 * * 1" # montags 04:00 UTC
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
dry-run:
|
||||
description: "Nur anzeigen, was Renovate taete (keine PRs)"
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
renovate:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
||||
|
||||
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
with:
|
||||
node-version: 24 # Renovate 44 verlangt Node 24
|
||||
|
||||
- name: Renovate laufen lassen
|
||||
env:
|
||||
RENOVATE_PLATFORM: gitea
|
||||
RENOVATE_ENDPOINT: https://git.rolandhentschel.de/api/v1
|
||||
RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }}
|
||||
RENOVATE_REPOSITORIES: roland/rako-hausverwaltung,roland/clickfortravel-tms
|
||||
RENOVATE_GIT_AUTHOR: "Renovate <renovate@rolandhentschel.de>"
|
||||
# Ohne "onboarding" legt Renovate keine Konfigurations-PRs an: teilnehmen soll nur,
|
||||
# wer selbst eine renovate.json hat.
|
||||
RENOVATE_ONBOARDING: "false"
|
||||
RENOVATE_REQUIRE_CONFIG: "required"
|
||||
RENOVATE_DRY_RUN: ${{ inputs.dry-run && 'full' || '' }}
|
||||
LOG_LEVEL: info
|
||||
run: npx --yes renovate@44
|
||||
|
||||
@@ -5,5 +5,11 @@ die Prüfschritte (Check, Audit, gitleaks, Kuma-Meldung) leben hier an einer Ste
|
||||
|
||||
- `node-check.yml`: Node/npm-Projekte. Eingaben `check-command` (Default `npm run check`) und
|
||||
`node-version` (Default 22), Secret `KUMA_PUSH_TOKEN` (pro Repo, Kuma-Monitor "CI <repo>").
|
||||
- `renovate.yml`: Abhaengigkeits-Updates, montags 04:00 UTC, laeuft nur hier und legt die PRs
|
||||
in den unter `RENOVATE_REPOSITORIES` gelisteten Repositories an. Braucht das Secret
|
||||
`RENOVATE_TOKEN` (Gitea-Token mit Schreibrecht). Ein Projekt nimmt teil, wenn es eine
|
||||
`renovate.json` mit `{"extends": ["local>roland/ci-templates:renovate-basis"]}` hat.
|
||||
- `renovate-basis.json`: die gemeinsamen Renovate-Regeln. Minor und Patch gebuendelt in einen
|
||||
woechentlichen PR, Major nur nach Freigabe ueber das Dashboard, Sicherheits-Updates sofort.
|
||||
|
||||
Aufruf siehe Kopf der jeweiligen Datei. Actions sind auf Commit-SHAs gepinnt.
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"description": "Gemeinsame Renovate-Grundlage fuer die Node-Projekte. Ein Repo bindet sie mit extends: [\"local>roland/ci-templates:renovate-basis\"] ein.",
|
||||
"extends": ["config:recommended", ":semanticCommitTypeAll(chore)"],
|
||||
"timezone": "Europe/Berlin",
|
||||
|
||||
"schedule": ["* 4-7 * * 1"],
|
||||
"prConcurrentLimit": 3,
|
||||
"prHourlyLimit": 2,
|
||||
"dependencyDashboard": true,
|
||||
|
||||
"labels": ["abhaengigkeiten"],
|
||||
"rangeStrategy": "bump",
|
||||
|
||||
"packageRules": [
|
||||
{
|
||||
"description": "Patch und Minor gebuendelt: ein PR pro Woche statt zwanzig. Die CI des Repos entscheidet.",
|
||||
"matchUpdateTypes": ["minor", "patch"],
|
||||
"groupName": "kleine Updates",
|
||||
"groupSlug": "klein"
|
||||
},
|
||||
{
|
||||
"description": "Major einzeln, damit der Changelog im PR lesbar bleibt.",
|
||||
"matchUpdateTypes": ["major"],
|
||||
"dependencyDashboardApproval": true
|
||||
},
|
||||
{
|
||||
"description": "Typen-Pakete folgen ihrer Bibliothek, nicht dem eigenen Rhythmus.",
|
||||
"matchPackageNames": ["/^@types//"],
|
||||
"groupName": "kleine Updates",
|
||||
"groupSlug": "klein"
|
||||
}
|
||||
],
|
||||
|
||||
"vulnerabilityAlerts": {
|
||||
"description": "Sicherheitsluecken laufen am Zeitplan vorbei.",
|
||||
"schedule": null,
|
||||
"labels": ["abhaengigkeiten", "sicherheit"],
|
||||
"dependencyDashboardApproval": false
|
||||
},
|
||||
|
||||
"lockFileMaintenance": {
|
||||
"enabled": true,
|
||||
"schedule": ["* 4-7 1 * *"]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user