11 Commits

Author SHA1 Message Date
rlabadmin 788eaa390f CI owns the whole stack — deploy via docker stack deploy
Build & Deploy / build (push) Successful in 5s
Build & Deploy / deploy (push) Successful in 5s
- stack.yml: parameterize image tag with ${IMAGE_TAG:-latest} so callers
  can pin the SHA; falls back to :latest for manual invocations
- flow.yml: replace service update with `docker stack deploy -c -`
  piped over SSH. Handles both first-time deploy and rolling updates.
  No more manual `docker stack deploy` on the manager before CI works.

Portainer can still view the stack but should not auto-update the same
one from git — two writers will conflict.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 15:31:14 +02:00
rlabadmin 34173ee9d0 Tweak hero copy to make a visible update for pipeline test
Build & Deploy / build (push) Successful in 5s
Build & Deploy / deploy (push) Successful in 19s
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 15:26:27 +02:00
rlabadmin a4d77be4a3 Use instance-level vars for non-sensitive deploy config
Build & Deploy / build (push) Successful in 6s
Build & Deploy / deploy (push) Successful in 19s
- DEPLOY_HOST / DEPLOY_USER / REGISTRY_USER now read from vars.*,
  set once at /admin/actions/variables and inherited by all repos
- DEPLOY_SSH_KEY / REGISTRY_PASSWORD stay as secrets.*

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 15:14:48 +02:00
rlabadmin adb0c055c8 Replace placeholder with a proper multi-section landing page
Build & Deploy / build (push) Successful in 5s
Build & Deploy / deploy (push) Failing after 1s
- public/index.html: semantic HTML5 with header/nav, hero, features grid,
  stack description list, contact, footer
- public/styles.css: responsive layout, custom properties, dark-mode support
- public/favicon.svg

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 14:45:08 +02:00
rlabadmin b9b5809a76 Trigger workflow re-run after registry secrets added
Build & Deploy / build (push) Successful in 10s
Build & Deploy / deploy (push) Failing after 1s
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 14:37:01 +02:00
rlabadmin db407a1705 Switch registry login back to REGISTRY_USER/REGISTRY_PASSWORD
Build & Deploy / build (push) Failing after 3s
Build & Deploy / deploy (push) Has been skipped
Gitea's built-in GITHUB_TOKEN was not authorized to push to the
container registry on this instance. Use an explicit PAT stored in
repo secrets instead.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 14:35:29 +02:00
rlabadmin eb1d951044 Drop docker:27-cli override — runner default image already has both
Build & Deploy / build (push) Failing after 4s
Build & Deploy / deploy (push) Has been skipped
The hello-world test confirmed ba-runner's default ubuntu-latest image
has docker CLI and Node. Overriding to docker:27-cli stripped Node and
broke actions/checkout@v4 (a JS action). Use the default image.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 14:33:12 +02:00
rlabadmin d2542879f7 Drop explicit docker.sock mount — runner auto-injects it
Build & Deploy / build (push) Failing after 2s
Build & Deploy / deploy (push) Has been skipped
ba-runner already binds /var/run/docker.sock into every job container,
so declaring it in the workflow caused a Duplicate mount point error.
Keep the docker:27-cli image; let the runner provide the socket.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 14:32:00 +02:00
rlabadmin dde3f49571 Run build job in docker:27-cli container with host socket mount
Build & Deploy / build (push) Failing after 2s
Build & Deploy / deploy (push) Has been skipped
act_runner spawns an ephemeral container per job; the default image
lacks the docker CLI and cannot reach the host's Docker daemon. Use
the official docker:27-cli image and bind-mount /var/run/docker.sock
so docker build/push target the host engine.

Requires runner config.yaml to include /var/run/docker.sock in
container.valid_volumes; otherwise the mount is rejected.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 14:29:43 +02:00
rlabadmin 3545d8a6f0 Use built-in GITHUB_TOKEN for Gitea registry login
Build & Deploy / build (push) Failing after 3s
Build & Deploy / deploy (push) Has been skipped
Avoids needing to configure REGISTRY_USER / REGISTRY_PASSWORD secrets.
Gitea injects a per-run token scoped to the repo's own packages.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 14:25:03 +02:00
rlabadmin 48a3d3f3f5 Initial scaffold: static site served by nginx on :8080
Build & Deploy / build (push) Failing after 3s
Build & Deploy / deploy (push) Has been skipped
- public/index.html served via nginx.conf (port 8080)
- Dockerfile: nginx:1.27-alpine + HEALTHCHECK
- .gitea/workflows/flow.yml: build + push to Gitea registry, rolling deploy
- stack.yml: Swarm service wired to Traefik (host testwebsite.dev.serso.org)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 14:21:51 +02:00