Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# https://help.github.com/en/categories/automating-your-workflow-with-github-actions

name: "Release"

# Runs after a successful "Build" of a push to main, so failing tests never get released.
on:
workflow_run:
workflows:
- "Build"
types:
- "completed"
branches:
- "main"

permissions:
contents: "write"
issues: "write"
pull-requests: "write"

jobs:
release:
name: "Create Release"

if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'push' }}

runs-on: "ubuntu-latest"

steps:
- name: "Checkout"
uses: "actions/checkout@v4"
with:
ref: "${{ github.event.workflow_run.head_sha }}"
fetch-depth: 0

- name: "Install Node"
uses: "actions/setup-node@v4"
with:
node-version: "lts/*"

- name: "Run semantic-release"
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
run: "npx semantic-release@25.0.9"
11 changes: 11 additions & 0 deletions .releaserc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"branches": [
"main"
],
"tagFormat": "${version}",
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/github"
]
}
15 changes: 14 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,21 @@ vendor/bin/phpcs
nach einem Upgrade immer beide Testarten laufen lassen. CI testet auch `--prefer-lowest`,
Versionsconstraints also nicht höher setzen als nötig, aber auch nicht so niedrig, dass
die niedrigste Version die Tests bricht.
- Commits im Stil Conventional Commits (`fix:`, `fix(deps):`, `chore:`).
- Commits im Stil Conventional Commits (`fix:`, `fix(deps):`, `chore:`). Sie bestimmen die
Version (siehe Releases), der Commit-Typ ist also eine Release-Entscheidung.
- Branch für Entwicklung ist `main` (CI läuft auf Push nach `main` und auf PRs). Ältere
Versionszweige: `1.0`, `3.0`. `main` ist geschützt: nur per PR, alle CI-Jobs
`Tests (…)` sind Pflicht-Checks. Ändert sich die PHP-Matrix, müssen die Pflicht-Checks in
der Branch-Protection angepasst werden.

## Releases

Releases macht semantic-release (`.releaserc`, `.github/workflows/release.yaml`), keine
Tags von Hand setzen. Nach jedem erfolgreichen Build eines Pushes auf `main` erzeugt es aus
den Commits seit dem letzten Tag Tag und GitHub-Release (Tag-Format ohne `v`, z. B.
`8.0.2`); Packagist übernimmt den Tag per Webhook.

- `fix:` → Patch, `feat:` → Minor, `BREAKING CHANGE:` im Commit-Footer (oder `feat!:`) → Major.
- `chore:`, `ci:`, `docs:`, `test:` lösen allein kein Release aus.
- Neue oder strengere Regeln können bei Nutzern Builds brechen: bewusst entscheiden, ob
das ein `BREAKING CHANGE` ist.
Loading