2.7 KiB
name, description, type
| name | description | type |
|---|---|---|
| Phase 1 task 1.8 decisions | Key implementation decisions and divergences from spec made during task 1.8 (Gitea CI dry-run workflow) | project |
Phase 1 task 1.8 — Gitea CI dry-run workflow decisions
Core decisions
No docker/build-push-action: Used plain docker build -t trm-directus:ci . instead of docker/build-push-action.
Why: build-push-action with the docker-container Buildx driver exports the image into a separate buildkitd cache that is NOT accessible to a subsequent docker run. The dry-run step needs the image in the local Docker daemon. The processor workflow uses build-push-action but it has no post-build dry-run step.
How to apply: Any Directus workflow variant that needs to run the image after building must use plain docker build, not build-push-action.
--network host + DB_HOST=localhost: Service container is bound via ports: ['5432:5432'] to the runner's loopback (127.0.0.1:5432). The docker run container uses --network host to share that namespace, making Postgres reachable as localhost:5432.
Why: The spec draft had a bug — it used --network host but set DB_HOST: postgres. With host networking, service containers are NOT reachable by their service name; only localhost works. The service name (postgres) is only resolvable in bridge-network mode.
How to apply: Always use DB_HOST=localhost when pairing --network host with a services: port-mapped container.
health-retries 20: Raised from spec's default of 10.
Why: The timescaledb-ha image has a slower startup than plain postgres (init script runs TimescaleDB preload). 10 retries at 5s = 50s max wait; 20 retries = 100s, safer margin.
Portainer step uses curl -fsS: Added -f (fail on HTTP error) and -sS (silent but show errors).
Why: Bare curl -X POST exits 0 even on a 4xx/5xx response. -f makes curl exit non-zero on server errors, so a misconfigured webhook URL surfaces as a workflow failure rather than a silent no-op.
--health-cmd includes -d directus: Spec draft had pg_isready -U directus without -d directus. Added the -d flag for precision.
Deliberate divergences from processor workflow:
- No
actions/setup-node, nocorepack enable, nopnpm install— Directus is not a Node project; no TypeScript to compile or test. - No
docker/setup-buildx-action— Buildx with docker-container driver sequesters images fromdocker run. - No typecheck/lint/test steps — Phase 1 has no extensions. Phase 5 will add these.
- Added
services:block — processor has no service dependency. - Separate build + dry-run + push steps instead of single
build-push-action. runs-on: ubuntu-22.04(pinned) vs processor'subuntu-latest(floating).