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