Skip to content

feat: Migrate deploy to Bunny and revamp CI #54

feat: Migrate deploy to Bunny and revamp CI

feat: Migrate deploy to Bunny and revamp CI #54

# Copyright (C) 2026 Sten Tijhuis
# SPDX-License-Identifier: MIT
name: Config validation
# De bot-configs zijn het enige deel van CI dat verder nergens door wordt
# geraakt: een kapotte renovate.json of dependabot.yml laat geen build falen,
# die houdt gewoon stilletjes op met zijn werk. Deze workflow merkt dat op.
on:
push:
branches: [main, development]
paths:
- 'renovate.json'
- '.github/renovate.json'
- '.github/dependabot.yml'
- '.github/dependabot.yaml'
- '.github/scripts/check-renovate-patterns.py'
- '.github/workflows/config-validation.yml'
pull_request:
branches: [main, development]
paths:
- 'renovate.json'
- '.github/renovate.json'
- '.github/dependabot.yml'
- '.github/dependabot.yaml'
- '.github/scripts/check-renovate-patterns.py'
- '.github/workflows/config-validation.yml'
workflow_dispatch:
permissions: {}
jobs:
bot-configs:
name: Renovate and Dependabot config
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Check out source code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version: 'lts/*'
# Renovates eigen validator. --strict laat hem ook falen op warnings,
# bijvoorbeeld een optie die geldig maar verouderd is. Zonder argumenten
# zoekt hij de configbestanden zelf op en valideert hij ze als
# repository-config; geef je een pad mee, dan valideert hij ze als
# global config, en dat is een andere en zwakkere set regels.
#
# Bewust niet vastgezet. Dit is een linter op onze eigen config en geen
# onderdeel van wat we uitleveren, en juist de nieuwste release kent de
# nieuwste deprecations. Zijn eigen versie is geen pull request waard.
#
# NPM_CONFIG_LOGLEVEL: npm print "npm warn deprecated ..." voor packages
# diep in Renovates eigen dependency-boom. Die zeggen niets over de config
# die gevalideerd wordt, en ze lezen alsof dat wel zo is, is de fout die
# je vanzelf maakt als ze vlak boven de output van de validator staan.
- name: Validate Renovate config
env:
NPM_CONFIG_LOGLEVEL: error
run: npx --yes --package renovate -- renovate-config-validator --strict
# De validator hierboven accepteert een correct gevormd patroon dat
# nergens op matcht; dit dekt het gat dat hij daarmee laat.
- name: Check Renovate file patterns
run: python3 .github/scripts/check-renovate-patterns.py renovate.json .github/renovate.json
# GitHub valideert dependabot.yml pas als die op de default branch staat,
# en meldt het resultaat op een tabblad dat niemand opent. Dit haalt dat
# naar voren, naar de pull request.
- name: Validate Dependabot config
env:
# renovate: datasource=pypi depName=check-jsonschema
CHECK_JSONSCHEMA_VERSION: "0.38.0"
run: |
config=""
for candidate in .github/dependabot.yml .github/dependabot.yaml; do
if [ -f "$candidate" ]; then
config="$candidate"
break
fi
done
if [ -z "$config" ]; then
echo "No dependabot.yml in this repository; nothing to validate."
exit 0
fi
pipx install "check-jsonschema==${CHECK_JSONSCHEMA_VERSION}"
check-jsonschema --builtin-schema vendor.dependabot "$config"