mhoennig and Claude Fable 5
8b71d0db8e
Fix Docker builds under rootless daemons and expose git metadata to build containers
...
Two fixes from the vm4006 rollout (docs/plan/16-git-in-docker-builds.md):
Rootless daemons map the host user to container root, so running the build
container as --user <host-uid> put it into the subuid range and it could not
even create .gradle in a fresh worktree (legacy only worked because its
ownership-repair chown had accidentally moved build/ and .gradle/ into subuid
ownership in its reused primary checkout). The container now always runs as
--user 0: the unprivileged host user under rootless, real root under rootful
where the ownership repair still applies; under rootless it degenerates to 0:0.
Git now works inside build containers: the primary .git is mounted read-only
with .git/gittally/ masked by an empty tmpfs (git.token and the control token
stay unreachable, the workspace bind resurfaces only the build's own worktree)
and the worktree admin dir mounted read-write for index-refreshing commands.
Verified on vm4006: git log/status succeed, the machine config is invisible,
ref writes fail on the read-only mount.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-10 15:34:39 +02:00
mhoennig
66183f9765
Add build-phase timing and overhead optimization plan to docs
2026-08-10 13:32:17 +02:00
Michael Hoennig and Claude Fable 5
b104eeee05
added opt-in managed nginx/TLS container (ADR 0005, plan step 13): server.nginx.* config serves GitTally over HTTPS on hosts without a reverse proxy — two-phase startup (ACME webroot via certbot container, then full HTTPS config), daily certificate renewal with nginx reload, labelled container removed on shutdown; all failures are non-fatal, the plain HTTP server keeps running
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-08 21:51:33 +02:00
Michael Hoennig
d3a69a151a
updated artifact links: added target="_blank" and rel="noopener noreferrer" to ensure external logs and reports open in a new tab; updated docs and tests accordingly
2026-07-07 15:39:59 +02:00
Michael Hoennig
a659cd6764
reintroduced legacy Branches view: added /branches endpoint for listing origin branches and their latest builds (or unknown for never-built branches), updated UI with reload button and navigation, and enhanced API and tests
2026-07-07 15:16:01 +02:00
Michael Hoennig
142bc87604
added ADR 0005 and step 13: reintroduce managed nginx+certbot as an opt-in feature for hosts without a reverse proxy (e.g. Hostsharing); partially supersedes ADR 0004; updated plans, documentation, and migration guides
2026-07-07 14:40:11 +02:00
Michael Hoennig
60ff595a9d
implemented 12-deployment.md: added systemd service generation (init --systemd) and migration guide from legacy script; introduced JSON-file persistence, server-rendered UI with polling, and reverse-proxy-based deployment; updated documentation
2026-07-07 14:18:41 +02:00
Michael Hoennig
e869b46cbf
implemented 11-docker-build-runtime.md: added optional Docker-based build execution with configuration, per-branch runtime selection, image rebuild on input changes, Gradle cache volume, and ownership repair; updated docs and configuration
2026-07-07 13:49:08 +02:00
Michael Hoennig
73221a8b8b
implemented 10-cli-commands.md: added CLI commands for branch name resolution, one-shot builds, failed build retries, and build status reports; includes tests for functionality and edge cases
2026-07-07 13:19:29 +02:00
Michael Hoennig
a6a2c9de0b
implemented 09-system-metrics.md: added system metrics: introduced system monitoring with a metrics collector, REST API endpoint, Thymeleaf UI rendering, and lifecycle management
2026-07-07 12:55:11 +02:00
Michael Hoennig
25a0742a58
implemented 08-web-ui.md: added Thymeleaf-based web UI: templates for builds, artifacts, current builds, and fragments; static assets for favicon, CSS, and JavaScript
2026-07-07 12:23:12 +02:00
Michael Hoennig
490914de0b
implemented 07-server-mode.md: added server profile with REST API for builds, artifacts, live logs, and control tokens; lifecycle management for watcher; controller and service tests
2026-07-07 11:27:27 +02:00
Michael Hoennig and Claude Fable 5
a1db450bdb
implemented 06-watcher.md: non-blocking poll cycle enqueueing changed/new/auto-build branches via the async executor, startup recovery, retention/worktree pruning, JSON auto-build slot state, watcher.pollInterval config, and watcher health state
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-07 10:28:28 +02:00
Michael Hoennig and Claude Fable 5
3c9eeda5da
implemented 05-artifact-store.md: filesystem artifact store with legacy-compatible naming, atomic persist from concurrent builds, retention pruning, and artifacts.rootDir config
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-07 10:08:40 +02:00
Michael Hoennig and Claude Fable 5
b379bc0a6b
implemented 04-build-executor.md incl. concurrency amendment: async builds in per-branch worktrees, builds.maxConcurrent, cancellation, live logs; fix .gitignore build/ rule that silently excluded the de.hoennig.gittally.build package (also recovers the step-01 domain files)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-07 08:43:28 +02:00
Michael Hoennig
ae3ae7aa04
implemented 03-gitea-client.md: added Gitea API client for commit statuses, status mapping, and extensive tests
2026-07-07 07:34:18 +02:00
Michael Hoennig
a427665ce8
implemented 02-git-gateway.md: added Git access layer with credentials bridge, duration parser, and extensive tests
2026-07-07 07:10:38 +02:00
Michael Hoennig
f4a6ec9194
implemented 01-build-state-domain: add execution notes and jackson-datatype-jsr310 dependency
2026-07-07 06:53:04 +02:00
Michael Hoennig
38e080814e
update CLAUDE.md with rewrite plan documentation reference in docs/pland directory
2026-07-07 06:40:27 +02:00