Die Release-Pipeline von ancaria, für mich und alle, die beim Veröffentlichen des Loaders helfen.
Jedes Repository erscheint per Knopfdruck: Du gibst eine Version ein, und sein
release.yml baut, veröffentlicht und legt das GitHub Release an.
Versionsdateien und festgenagelte Versionen der Nachbarn gibt es nicht mehr.
Eine Version existiert nur als Tag v<Version> mit seinem Release.
Nach jedem Release veröffentlicht devops alles, was davon abhängt, in der
richtigen Reihenfolge. Danach erneuert es meta.json, aus der der Launcher
erfährt, welche Komponenten er herunterlädt. Einmal am Tag zählt es außerdem
die Codezeilen für die Badges in den READMEs neu.
Der Schritt finish in release.yml startet train.yml in devops mit
released=<Repository>@<Version>. Der Zug liest graph.yml und geht es von
oben nach unten durch:
| Von | Nach | Wann |
|---|---|---|
mappings |
agent |
nach jedem Release |
coderpack |
build |
wenn sich api, api-kotlin, api-skiko oder api-compose geändert hat |
build |
idea |
nach jedem Release |
Ein nachgelagertes Repository bekommt seinen eigenen höchsten Tag plus einen
Patch, außer versions nennt eine andere Version. Die Version des
vorgelagerten erhält es über den Input, den graph.yml nennt. Jedes
Repository erscheint einmal, nach all seinen veröffentlichten Vorgängern. Der
Zug wartet auf jeden Lauf und hält beim ersten Fehler an.
Am Ende eines Zugs baut meta.yml die meta.json aus den neuesten Releases:
die .exe des Launchers, protocol.exe, api.jar und zygote.jar aus
coderpack und agent.zip aus agent. apiLevel liest es aus Api.VERSION am
neuesten Tag von coderpack. Weicht die Datei von der veröffentlichten ab, lädt
wrangler sie nach R2, und der Launcher liest sie unter
https://ancaria.dev/files/launcher/meta.json.
meta.yml und cloc.yml kannst du auch ohne Release von Hand starten.
| Name | Wo | Was |
|---|---|---|
DEVOPS_APP_ID |
Variable der Organisation | ID der GitHub App |
DEVOPS_APP_KEY |
Secret der Organisation | privater Schlüssel dieser App |
CLOUDFLARE_API_TOKEN |
Secret in devops | Token mit Schreibrecht auf den R2-Bucket ancaria-files |
CLOUDFLARE_ACCOUNT_ID |
Secret in devops | ID des Cloudflare-Kontos |
Die GitHub App braucht Lese- und Schreibrechte für Contents und Actions. Installier sie auf allen Repositorys von ancaria-dev: Über sie starten Releases den Zug, und der Zug startet Releases und liest private Repositorys für die Badges.
devops baut nichts. Lokal prüfst du es so:
pip install pyyaml
python -m unittest
python scripts/train.py --dry-run --versions "coderpack=2.1.0"Der Probelauf nutzt deine eigene Anmeldung bei gh und startet nichts.
MIT, siehe LICENSE.