4.5 KiB
CI Workflows Repository
Dit repository bevat centrale CI/CD workflows voor gebruik met Gitea Actions + runners.
Het doel is om build-, release- en deploylogica één keer te definiëren en vervolgens herbruikbaar te maken voor meerdere repositories.
De workflows in dit repo worden gebruikt via reusable workflows (workflow_call), zodat individuele projecten alleen nog een dunne “wrapper”-workflow nodig hebben.
📦 Wat zit er in dit repository?
Momenteel bevat dit repo onder andere:
- WP Plugin Build & Release workflow
- Leest de pluginversie uit de plugin header
- Genereert automatisch
manifest.json - Bouwt een distributie-zip
- Maakt (indien nodig) een Gitea release
- Uploadt het zip-bestand als release asset
- Slaat releases over als de tag al bestaat
De workflows zijn ontworpen om:
- versie-gebaseerd te werken (
vX.Y.Z) - veilig herbruikbaar te zijn
- zonder repo-specifieke aannames te functioneren
🧠 Architectuur
Waarom centraal?
- Geen copy-paste CI meer
- Eén plek om fixes en verbeteringen door te voeren
- Consistente releasestructuur
- Minder onderhoud per project
Hoe?
- Dit repo bevat de logica
- Consumer repos bepalen:
- wanneer een workflow draait (
on: push,workflow_dispatch,paths) - welke parameters worden doorgegeven (slug, main file, release notes)
- wanneer een workflow draait (
🔁 Gebruik in andere repositories
1. Voorwaarden
De consumer repo moet:
- Gitea Actions ingeschakeld hebben
- Toegang hebben tot dit repo
- Een
RELEASE_TOKENsecret bevatten metrepo-rechten
Optioneel kunnen repo-variables gebruikt worden:
RELEASE_SERVER_URLRELEASE_REPOSITORY
2. Voorbeeld: WordPress plugin release
In de consumer repo:
.gitea/workflows/release.yml
name: Build & Release Plugin
on:
workflow_dispatch:
inputs:
release_notes:
description: "Optionele release-opmerkingen"
required: false
push:
branches: [ main ]
paths:
- 'plugin-main-file.php'
- 'includes/**'
- 'assets/**'
- 'README.md'
jobs:
release:
uses: org/ci-workflows/.gitea/workflows/wp-plugin-release.yml@v1
with:
main_file: plugin-main-file.php
slug: my-plugin-slug
release_body: "${{ inputs.release_notes }}"
secrets:
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
De volledige build- en releaseflow wordt hiermee centraal uitgevoerd.
🔧 Beschikbare inputs (WP Plugin workflow)
| Input | Verplicht | Beschrijving |
|---|---|---|
main_file |
✅ | Pad naar het hoofd pluginbestand met Version: header |
slug |
✅ | Plugin slug / mapnaam in de zip |
release_title |
❌ | Titel van de release |
release_body |
❌ | Release notes (bijv. via workflow_dispatch) |
🔐 Secrets & rechten
Vereist
RELEASE_TOKEN
Gitea API token metrepo-rechten
Optioneel (repo variables)
RELEASE_SERVER_URL
Voor self-hosted Gitea (override van server URL)RELEASE_REPOSITORY
Override voorowner/repository
🏷️ Versiebeheer van workflows
Gebruik tags in dit repository:
v1→ stabiele major versiev1.0.1→ bugfix / non-breaking wijzigingv2→ breaking changes
Consumer repositories moeten altijd pinnen op een tag of commit SHA:
uses: org/ci-workflows/.gitea/workflows/wp-plugin-release.yml@v1
Dit voorkomt onverwachte regressies bij wijzigingen in centrale CI-logica.
🧪 Ontwikkelen & testen van workflows
Aanpak voor wijzigingen in dit CI-repository:
- Maak een feature branch in dit repository
- Pas de workflow(s) aan
- Test de wijzigingen via een aparte test-repository
- Merge de branch naar
main - Tag een nieuwe versie (
vX.Y.Z)
Breaking change?
→ verhoog altijd de major versie (v2, v3, …)
🚫 Wat hoort niet in dit repository?
Dit repository bevat uitsluitend generieke CI/CD-logica.
Niet opnemen:
- Project- of plugin-specifieke bestandsnamen
- Hardcoded slugs, paden of repository-namen
- Triggers zoals
on: push,pathsof branch-namen - Omgevingsspecifieke aannames of secrets
Alles wat per project verschilt hoort in de consumer workflow.
📌 Richtlijn
Consumer repositories bepalen wanneer een workflow draait.
Dit repository bepaalt hoe de workflow wordt uitgevoerd.
📄 Gebruik & scope
Intern CI/CD repository voor herbruikbare Gitea Actions workflows.
Bedoeld voor gebruik binnen de organisatie en gekoppelde projecten.