87 lines
3.2 KiB
Markdown
87 lines
3.2 KiB
Markdown
# idf-ci
|
|
|
|
Zentrale CI-Bausteine für IDF-Repos.
|
|
|
|
## Zweck
|
|
|
|
Dieses Repo ist die Heimat für **geteilte CI-Bausteine**, die von anderen IDF-Repos per `uses:` eingebunden werden. Vorteil: Eine Änderung an einer Stelle wirkt in allen nutzenden Repos — kein 26-facher Copy-Paste-Pflegeaufwand.
|
|
|
|
Aktuell enthalten:
|
|
|
|
- `.gitea/workflows/release-plugin.yml` — Reusable Workflow für WordPress-Plugin-Releases. Bei Tag-Push (`v*.*.*`) prüft er Versions-Konsistenz über alle vier Sync-Stellen, extrahiert den Changelog-Block aus `readme.txt`, baut das ZIP und legt einen Gitea-Release mit ZIP-Asset an.
|
|
|
|
Geplant:
|
|
|
|
- `lint-php.yml` — PHPCS / PHPStan für Plugin-Repos.
|
|
- `composer/` — geteilte `composer.json`-Snippets.
|
|
- `scripts/` — Shell-Helfer für lokales Build und Release.
|
|
|
|
## Nutzung im Plugin-Repo
|
|
|
|
In jedem Plugin-Repo (`ideenfabrik/idf-<slug>`) liegt ein schlanker Caller-Workflow, der den Reusable aufruft:
|
|
|
|
```yaml
|
|
# .gitea/workflows/release.yml
|
|
name: Release
|
|
on:
|
|
push:
|
|
tags: ['v*.*.*']
|
|
|
|
jobs:
|
|
release:
|
|
uses: ideenfabrik/idf-ci/.gitea/workflows/release-plugin.yml@v1
|
|
with:
|
|
slug: idf-<plugin-slug>
|
|
secrets: inherit
|
|
```
|
|
|
|
Für die Anwendung reicht `git tag v1.2.3 && git push --tags`. Alles andere macht der Reusable Workflow. Details und Fehlerdiagnose im [Caller-Template](docs/plugin-caller-template.md).
|
|
|
|
## Pflichtdateien im Plugin-Repo
|
|
|
|
Damit der Reusable Workflow durchläuft, müssen im Plugin-Repo vorhanden sein:
|
|
|
|
1. **`<slug>.php`** — Plugin-Haupt-PHP mit WordPress-Plugin-Header inklusive Zeile `Version: X.Y.Z`.
|
|
2. **Versions-Konstante** in einer beliebigen PHP-Datei:
|
|
`define('IDF_<UPPER_SLUG_OHNE_IDF_>_VERSION', 'X.Y.Z');`
|
|
Beispiel: `idf-login-branding` → `IDF_LOGIN_BRANDING_VERSION`.
|
|
3. **`readme.txt`** im Repo-Root im WordPress-Plugin-Format mit mindestens:
|
|
```
|
|
=== Plugin Name ===
|
|
Requires at least: 6.0
|
|
Tested up to: 6.4
|
|
Requires PHP: 7.4
|
|
Stable tag: 1.2.3
|
|
|
|
== Description ==
|
|
…
|
|
|
|
== Changelog ==
|
|
|
|
= 1.2.3 =
|
|
* Neu: Feature xyz
|
|
* Fix: Bug abc
|
|
```
|
|
|
|
Alle vier Versionen (Tag, Plugin-Header, PHP-Konstante, `Stable tag:`) müssen identisch sein. Der Pre-Flight-Check im Reusable bricht sonst ab.
|
|
|
|
`readme.txt` ist die **einzige Pflege-Stelle für den Changelog**. Master-Key parst sie später auch für den automatischen Sync der öffentlichen Plugin-CPT-Seite auf `ihre-ideenfabrik.de`. `CHANGELOG.md` wird nicht mehr gepflegt und fliegt im ZIP-Bau raus.
|
|
|
|
## Versionierung dieses Repos
|
|
|
|
Die Reusable Workflows selbst sind per SemVer-Tag versioniert (`v1`, `v1.2`, `v1.2.3`). Plugin-Repos referenzieren einen dieser Tags. Empfehlung:
|
|
|
|
- **Major-Tag (`@v1`)** — rolling, nimmt automatisch Patches und Minors mit.
|
|
- **Minor-Tag (`@v1.2`)** — nimmt nur Patches mit.
|
|
- **Exakt (`@v1.2.3`)** — einfriert auf genau diese Version.
|
|
|
|
Breaking Changes am Workflow → neuer Major-Tag, nutzende Repos müssen manuell nachziehen.
|
|
|
|
## Dokumentation
|
|
|
|
Konzeptionelle Grundlagen und der Plugin-Release-Workflow liegen in Notion:
|
|
|
|
- [Deployment & Versionierung](https://www.notion.so/32b36ebfe9178147ad16ee214302c994)
|
|
- [Plugin-Migration auf Git — Checkliste](https://www.notion.so/34b36ebfe9178195980fd4a723ebfde5)
|
|
- [Git- & Issue-Workflow](https://www.notion.so/34b36ebfe91781519276f301aac0d74c)
|