feat(release): Releases in Gitea aus dem CHANGELOG erzeugen (#046)
Bisher gab es nur Tags - eine Markierung im Verlauf. Eine Release ist ein Eintrag in Gitea mit Titel und Beschreibung, sichtbar, abonnierbar, verlinkbar. npm run releases:sync liest das CHANGELOG, nimmt jeden Abschnitt, zu dem es ein Tag gibt, und legt daraus eine Release an; ein zweiter Lauf aktualisiert nur Geaendertes. "Unreleased" bleibt aussen vor, weil es dazu kein Tag gibt. Fuenf Tests decken die Zerlegung ab. Der Lauf gegen Gitea scheitert derzeit an den Zugangsdaten: Hinterlegt ist ein elfstelliges Passwort, kein API-Token. Fuer Releases braucht es write:repository, fuer den Issue-Abgleich issue:write. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# #046 Releases in Gitea statt nur Tags
|
||||
**Status:** erledigt
|
||||
**Meilenstein:** v1.0.1
|
||||
**Labels:** chore, doku
|
||||
**Geschätzt:** 1 h **Tatsächlich:** 0 h 25 min
|
||||
|
||||
## Auslöser
|
||||
„Kannst du auch Releases machen und nicht nur Tags?“
|
||||
|
||||
## Unterschied
|
||||
Ein Tag ist eine Markierung im Git-Verlauf. Eine **Release** ist ein Eintrag in Gitea mit Titel,
|
||||
Beschreibung und Download-Verweisen – sichtbar unter *Releases*, abonnierbar und verlinkbar.
|
||||
Bislang gab es nur Tags; die Beschreibungen standen allein im CHANGELOG.
|
||||
|
||||
## Umsetzung
|
||||
`npm run releases:sync` liest das CHANGELOG, nimmt jeden Abschnitt `## [x.y.z] – Datum`, für den es
|
||||
ein Tag gibt, und legt daraus eine Release an. Ein zweiter Lauf aktualisiert nur, was sich geändert
|
||||
hat; „Unreleased“ bleibt außen vor, weil es dazu kein Tag gibt.
|
||||
|
||||
```bash
|
||||
npm run releases:sync -- --dry-run # zeigt nur, was passieren würde
|
||||
npm run releases:sync # legt an und aktualisiert
|
||||
npm run releases:sync -- v1.0.0 # nur eine Fassung
|
||||
```
|
||||
|
||||
Fünf Tests decken die Zerlegung ab.
|
||||
|
||||
## Offen: der Token
|
||||
Der in den Git-Zugangsdaten hinterlegte Wert ist elf Zeichen lang – ein Passwort, kein API-Token.
|
||||
Pushen funktioniert damit, die API antwortet mit 401. Betrifft auch `npm run issues:sync`, das seit
|
||||
dem 10.10.2026 nicht mehr durchläuft.
|
||||
|
||||
**Nötig:** in Gitea unter *Einstellungen → Anwendungen* ein Token mit den Rechten
|
||||
`write:repository` (für Releases) und `issue:write` (für den Issue-Abgleich) erzeugen und entweder
|
||||
als `GITEA_TOKEN` in die `.env` legen oder in den Git-Zugangsdaten hinterlegen. Danach trägt ein
|
||||
einziger Lauf alle 43 vorhandenen Fassungen nach.
|
||||
@@ -49,4 +49,5 @@ Details und Architektur: [../architektur.md](../architektur.md). Zeiten werden a
|
||||
| [#043](043-laufzeiten-bearbeiten.md) | Laufzeiten anlegen, bearbeiten, zusammenführen | erledigt | v0.25.0 | 4 h | 1 h 05 min |
|
||||
| [#044](044-eigenbedarf.md) | Eigene Hosts ohne Weiterberechnung | erledigt | v0.26.0 | 2 h | 0 h 40 min |
|
||||
| [#045](045-wiederherstellung-geprobt.md) | Wiederherstellung proben und Skript dafür | erledigt | v0.27.0 | 2 h | 0 h 50 min |
|
||||
| | **Summe** | | | **177 h** | **25 h 28 min** |
|
||||
| [#046](046-gitea-releases.md) | Releases in Gitea statt nur Tags | erledigt | v1.0.1 | 1 h | 0 h 25 min |
|
||||
| | **Summe** | | | **178 h** | **25 h 53 min** |
|
||||
|
||||
Reference in New Issue
Block a user