build+deploy: reproducible pipeline via Gitea Actions + gw-04 image-watcher #1

Merged
osobh merged 4 commits from chore/build-and-deploy-pipeline into main 2026-07-05 16:06:56 +00:00
Showing only changes of commit 0e2a7f3dd1 - Show all commits
+21 -3
View File
@@ -20,10 +20,23 @@ jobs:
rust:
runs-on: ubuntu-latest
needs: gates
# Compile sqlx query! macros against the committed .sqlx cache (no DB needed);
# DB-backed tests spin up their own postgres via testcontainers at runtime.
# Compile sqlx query! macros against the committed .sqlx cache (no DB needed).
# Tests still need a live Postgres — locally cm-testkit reads CM_TEST_DATABASE_URL
# from .cargo/config.toml pointing at scripts/test-server.sh's host container;
# in CI the runner is on the act-runner_default docker network and can't reach
# host 127.0.0.1, so we provide a service and override the URL to its DNS name.
env:
SQLX_OFFLINE: "true"
CM_TEST_DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres
services:
postgres:
image: postgres:16-alpine
env:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432
options: --health-cmd "pg_isready -U postgres" --health-interval 5s --health-timeout 3s --health-retries 10
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
@@ -98,10 +111,15 @@ jobs:
# its Tailscale IP — the fleet's daemons trust it in insecure-registries by
# IP, not by hostname). GW-04's clawmates-deploy.timer rolls forward within
# ~1 minute of the push. Skipped on PRs.
#
# `e2e` is intentionally NOT in `needs`: it launches its own postgres + dex
# via `docker run` on the host and then reaches them via 127.0.0.1, which
# fails from inside the act_runner container. Migrating e2e to a physical
# build node is a separate task; until then e2e is signal-only, not gating.
publish:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: [gates, rust, frontend, e2e]
needs: [gates, rust, frontend]
env:
REGISTRY: 100.94.185.103:5000
NAMESPACE: clawmates