Run CI orchestration and setup as Java 25 source programs
Some checks failed
Build, test and publish / verify (push) Failing after 11s
Some checks failed
Build, test and publish / verify (push) Failing after 11s
This commit is contained in:
@@ -5,6 +5,26 @@ backend en frontend, bouwt twee images en draait Playwright tegen die containers
|
||||
Alleen `main` mag daarna images publiceren. Er vindt geen deployment plaats.
|
||||
Tagpushes en aparte pull-requestevents starten geen extra workflow.
|
||||
|
||||
## Java-bronbestanden uitvoeren
|
||||
|
||||
De CI- en setuphulpmiddelen zijn Java 25-bronbestanden. Start ze direct met
|
||||
`java ci/Ci.java <opdracht>` vanuit de repositoryroot. De Java-launcher compileert
|
||||
de benodigde bronbestanden in het geheugen. Er is geen aparte `javac`-stap,
|
||||
Maven-module, Python-installatie of scriptingframework nodig. De helper gebruikt
|
||||
alleen de JDK, inclusief de HTTP-client, process builder en bestandsloten.
|
||||
|
||||
Beschikbare opdrachten: `verify`, `publish`, `cleanup`, `attempt`, `test`,
|
||||
`configure-gitea`, `configure-docker <daemon.json>` en
|
||||
`install-runner [--prepare-only]`. `verify` heeft een intern tijdsbudget van
|
||||
75 minuten; `publish` 15 minuten. Opruimen krijgt een apart budget van 2 minuten.
|
||||
|
||||
Zorg dat `java` naar JDK 25 verwijst, bijvoorbeeld met:
|
||||
|
||||
```sh
|
||||
export JAVA_HOME=/usr/lib/jvm/java-25-openjdk-amd64
|
||||
export PATH="$JAVA_HOME/bin:$PATH"
|
||||
```
|
||||
|
||||
## Machines en voorwaarden
|
||||
|
||||
Gitea 1.25.4 en de registry staan op de bestaande Synology,
|
||||
@@ -14,8 +34,8 @@ wakker blijven; Docker en de runner moeten draaien. Anders blijven jobs wachten.
|
||||
Een host-runner voert repositorycode uit als de ontwikkelgebruiker: gebruik deze
|
||||
runner alleen voor deze vertrouwde repository.
|
||||
|
||||
De runner heeft Git, Bash, JDK 25, Maven 3.9+, Node 22.22.3+/24.15.0+/26+, npm,
|
||||
Python 3, curl, flock (util-linux), timeout (coreutils) en een werkende Docker-daemon
|
||||
De runner heeft Git, Bash, JDK 25, Maven 3.9+, Node 22.22.3+/24.15.0+/26+, npm
|
||||
en een werkende Docker-daemon
|
||||
nodig. De huidige mini-pc heeft de ontwikkeltools en Docker Desktop al geïnstalleerd.
|
||||
De workflow gebruikt één job tegelijk (`capacity: 1`), één Playwright-worker en
|
||||
CPU/geheugenlimieten voor de tijdelijke applicatie- en browsercontainers.
|
||||
@@ -52,7 +72,7 @@ Je kunt de instelling ook samenvoegen met behoud van bestaande instellingen en
|
||||
backup via:
|
||||
|
||||
```sh
|
||||
python3 ci/runner/configure-docker.py "$HOME/.docker/daemon.json"
|
||||
java ci/Ci.java configure-docker "$HOME/.docker/daemon.json"
|
||||
```
|
||||
|
||||
Voor Docker Engine op Linux is dat dezelfde toevoeging aan
|
||||
@@ -88,7 +108,7 @@ Het gewone jobtoken van Gitea 1.25 biedt geen packagepublicatie; gebruik een PAT
|
||||
Gebruik een repository-runnerregistratietoken, geen instancebrede registratie.
|
||||
Sla tokenwaarden buiten Git op en plaats ze niet in opdrachten, screenshots of logs.
|
||||
|
||||
Voor reproduceerbare configuratie bestaat `ci/configure-gitea.py`. Maak twee
|
||||
Voor reproduceerbare configuratie bestaat `java ci/Ci.java configure-gitea`. Maak twee
|
||||
bestanden buiten de repository met mode `600`: één voor een PAT met voldoende
|
||||
repositorybeheerrechten (repository Actions, secrets, variabelen en runnerregistratie),
|
||||
en één voor de publicatie-PAT. De beheer-PAT hoeft niet als workflowsecret te worden
|
||||
@@ -100,7 +120,7 @@ export GITEA_ADMIN_TOKEN_FILE="$HOME/.config/agiledancers-runner/admin-token"
|
||||
export REGISTRY_TOKEN_FILE="$HOME/.config/agiledancers-runner/registry-token"
|
||||
export REGISTRY_USER=wanjakrah
|
||||
export TARGET_PLATFORM=linux/amd64 # alleen als dit op de Synology is vastgesteld
|
||||
python3 ci/configure-gitea.py
|
||||
java ci/Ci.java configure-gitea
|
||||
```
|
||||
|
||||
Het script stelt de repository-instellingen in via de API en schrijft het
|
||||
@@ -118,9 +138,9 @@ testdiagnostiek; gepubliceerde containerimages worden niet automatisch verwijder
|
||||
|
||||
```sh
|
||||
export JAVA_HOME=/usr/lib/jvm/java-25-openjdk-amd64
|
||||
bash ci/runner/install.sh --prepare-only
|
||||
java ci/Ci.java install-runner --prepare-only
|
||||
# Na Dockerconfiguratie en het opslaan van het registratietoken:
|
||||
bash ci/runner/install.sh
|
||||
java ci/Ci.java install-runner
|
||||
systemctl --user status agiledancers-runner
|
||||
journalctl --user -u agiledancers-runner -f
|
||||
```
|
||||
@@ -168,8 +188,8 @@ De frontend luistert op containerpoort 8080, ondersteunt SPA-routes en proxy't
|
||||
8080. Voorbeelden voor eventueel handmatig starten staan los van de pipeline;
|
||||
de pipeline start geen blijvende applicatie op de NAS.
|
||||
|
||||
`ci/verify.sh` maakt een succesmarker pas na alle builds en tests.
|
||||
`ci/publish.sh` vereist die marker en hoofdbranchref. Onder een gedeeld `flock`
|
||||
`java ci/Ci.java verify` maakt een succesmarker pas na alle builds en tests.
|
||||
`java ci/Ci.java publish` vereist die marker en hoofdbranchref. Onder een gedeeld Java-bestandslot (`FileChannel`)
|
||||
buiten de checkout worden bestaande commitimages hergebruikt en ontbrekende
|
||||
images geüpload. Iedere image wordt teruggehaald, op revisielabel gecontroleerd en
|
||||
met digest vastgelegd in de diagnostiek. Authenticatie- of netwerkfouten tellen
|
||||
@@ -192,7 +212,7 @@ niet in; de workflow maakt daarom zelf een unieke identificatie per poging. Geen
|
||||
inspect met mogelijke credentials wordt opgenomen.
|
||||
|
||||
Bij mislukking blijven de oorspronkelijke exitstatus en rapporten behouden.
|
||||
Een trap én een `always()`-stap verzamelen diagnostiek en verwijderen de tijdelijke
|
||||
Een Java-`finally`/shutdown-hook én een `always()`-stap verzamelen diagnostiek en verwijderen de tijdelijke
|
||||
containers en het netwerk met hun unieke runnaam. Een harde machine-uitval kan
|
||||
opruimen onderbreken: controleer daarna uitsluitend achtergebleven resources met
|
||||
label `agiledancers.ci.run`; gebruik geen algemene Docker-prune op de ontwikkel-PC.
|
||||
@@ -206,7 +226,7 @@ blijven de committags bruikbaar en worden de oude `main`-updates overgeslagen.
|
||||
Lokale controle van publicatie-/foutgedrag zonder registrywijzigingen:
|
||||
|
||||
```sh
|
||||
python3 -m unittest discover -s ci/tests -v
|
||||
java ci/Ci.java test
|
||||
```
|
||||
|
||||
Volledige lokale verificatie met Docker en de vastgestelde platformwaarde:
|
||||
@@ -214,7 +234,7 @@ Volledige lokale verificatie met Docker en de vastgestelde platformwaarde:
|
||||
```sh
|
||||
export JAVA_HOME=/usr/lib/jvm/java-25-openjdk-amd64
|
||||
export TARGET_PLATFORM=linux/amd64 # eerst de Synology controleren
|
||||
bash ci/verify.sh
|
||||
java ci/Ci.java verify
|
||||
```
|
||||
|
||||
## Operationele oplevering
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# S4 verification evidence
|
||||
|
||||
Date: 2026-10-28. Status: repository implementation and local container verification
|
||||
passed; operational Gitea acceptance remains pending. S4 is **not complete**.
|
||||
passed; Gitea and runner configuration are operational. Main publication is
|
||||
awaiting approval to merge PR #1. S4 is **not complete**.
|
||||
|
||||
## Verified locally
|
||||
|
||||
@@ -56,7 +57,8 @@ Local image IDs (not registry digests):
|
||||
`linux/amd64`; repository variable `TARGET_PLATFORM=linux/amd64` configured.
|
||||
- [x] Activate and verify the Docker Desktop HTTP-registry setting.
|
||||
- [x] Repository `REGISTRY_USER`/`REGISTRY_TOKEN` secrets configured using the
|
||||
supplied token files. Registry access is verified by actual publication below.
|
||||
supplied token files. A temporary Docker login with the registry token
|
||||
succeeded; actual publication still awaits a main-branch merge.
|
||||
- [x] Runner ID 1 (`agiledancers-mini-pc`) registered, service started and
|
||||
online in Gitea. Real feature/failure jobs ran on this runner.
|
||||
- [ ] Confirm server settings permit every branchpush (including messages with
|
||||
@@ -86,3 +88,30 @@ attempt identifier for containers and diagnostic artifact names. The Gitea v3
|
||||
artifact-list API returns an empty list despite successful uploads; artifacts
|
||||
were verified by downloading the run-page archive URLs. This is separate from
|
||||
artifact availability and does not require a server upgrade.
|
||||
|
||||
|
||||
## Ready for review; main merge not authorized
|
||||
|
||||
[PR #1](http://192.168.2.28:3000/wanjakrah/agiledancers/pulls/1) remains open at
|
||||
the maintainer's explicit request. No main merge or application image publication
|
||||
was performed.
|
||||
|
||||
[Feature run #3](http://192.168.2.28:3000/wanjakrah/agiledancers/actions/runs/3),
|
||||
API run/job ID 4, commit `834584dae06b5976936a5e739871f1164cf81bcd`, succeeded.
|
||||
The two container E2E tests passed and diagnostics were uploaded as
|
||||
`diagnostics-4-20261028164607460012324`, confirming unique attempt names work.
|
||||
|
||||
The main branch currently contains only its initial commit. PR #1 therefore
|
||||
includes the prior application history from `feature/setup` as well as S4. Its
|
||||
scope is documented in the PR description. A main merge needs explicit approval;
|
||||
only then can real main publication/pullback/rerun acceptance be completed.
|
||||
|
||||
|
||||
## Java 25 helper migration
|
||||
|
||||
CI orchestration, setup and behavior tests now run through `java ci/Ci.java`.
|
||||
The shell/Python helpers have been removed. The source launcher compiles helper
|
||||
classes in memory without external dependencies or preview flags. Fourteen Java
|
||||
behavior tests pass, including JSON/configuration preservation, publication gates,
|
||||
partial recovery and process deadlines. A real feature run validates this revision
|
||||
before updating the existing open PR; no merge to main is authorized.
|
||||
|
||||
Reference in New Issue
Block a user