- .gitea/workflows/ci.yml: build → seo:lint → e2e → image build/push → bump k8s image tag and commit back (paths-ignore + [skip ci] guard) - argocd/bcs-website-application.yaml: ArgoCD App (internal Gitea repoURL, k8s path) - k8s: image → Gitea Packages path; kustomization images newTag stanza - ADR-0007 (Gitea Actions + Packages), supersedes GHCR/GitHub bits of ADR-0001 - Reconcile gitops-deployment-strategy.md to Gitea Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.0 KiB
2.0 KiB
ADR-0007: CI on Gitea Actions, images in Gitea Packages
Status: Accepted — 2026-07-15 · Supersedes the GitHub Actions + GHCR specifics of ADR-0001 (the ArgoCD/GitOps model itself stands).
Context
The repo lives on the homelab's self-hosted Gitea (bmr_bluecap/bcs-website), not GitHub, so
GitHub Actions and GHCR do not apply. Gitea runs an act_runner (GitHub-Actions-compatible)
and a built-in container registry (Gitea Packages, OCI /v2/ confirmed live at
10.66.15.22:3000). The runner mounts /var/run/docker.sock; its label is ubuntu-latest
(jobs run in a node:18-bullseye container).
Decision
- CI = Gitea Actions, workflow at
.gitea/workflows/ci.yml,runs-on: ubuntu-latest. - Registry = Gitea Packages at
10.66.15.22:3000/bmr_bluecap/bcs-website, immutable<git-sha>tags. Auth via the run's automatic token. - Pipeline:
npm ci→ build (typecheck) →seo:lint→ Playwright e2e → build & push image → bump the image tag ink8s/kustomization.yamland commit back tomain([skip ci]+paths-ignoreto avoid a loop). ArgoCD then reconciles k3s (unchanged from ADR-0001). - Package visibility: public (recommended) — the image contains only the compiled public site, so a public package removes the need for a cluster imagePullSecret. Private + an External-Secrets-managed pull secret is the documented alternative.
Consequences
- No external CI/registry dependency; everything stays in the homelab.
- New infra prerequisites (see
docs/gitops-deployment-strategy.md): k3s must trust the HTTP registry (registries.yaml/k3s_registry_mirrorsentry for10.66.15.22:3000); the runner host's Docker daemon needs10.66.15.22:3000as an insecure registry; docker must be usable from job containers (act_runner socket passthrough) or the build switches to kaniko. GHCR/GitHubreferences in ADR-0001 and older doc revisions are superseded by this ADR.