normogen/docs/development/CI-CD.md
goose 17efc4f656 docs: reconcile documentation with reality (P3)
Make the project's documentation match the code and remove the sprawl. The docs
claimed Phase 2.8 (drug interactions) was 'planning/0%' and the backend '~91%
complete' — both wrong: 2.8 is implemented and live, plus the P0/P1 security
and test work is done. Five root CI/CD docs described a 'docker-build' CI job
that was removed; ~18 backend/ status snapshots and ~24 docs/implementation
duplicates cluttered the tree.

Deletions (85 files):
- Root: 4 stale CI/CD reports (CI-CD-{COMPLETION-REPORT,IMPLEMENTATION-SUMMARY,
  STATUS-REPORT,FINAL-STATUS}.md) — all describe the removed docker-build job.
- backend/: 18 phase/build/fix snapshots and code-dump .txt files.
- docs/: the 3 one-time reorg reports; ~17 docs/implementation duplicates and
  process artifacts; 4 stale docs/development CI docs + git snapshots;
  redundant deployment/testing files.
- thoughts/: STATUS.md (said Phase 2.4 in-progress), superseded phase notes and
  duplicative research inputs. tmp/ (928KB of CI debug logs, gitignored).

Moves (18 files):
- 9 genuine decision records -> docs/adr/ (Architecture Decision Records),
  date-prefixes stripped, with an index README.
- 8 historical-but-valuable phase plans/specs + the old CI-CD-FINAL-SOLUTION ->
  docs/archive/ (now-populated, with a README explaining it's superseded
  material). thoughts/ tree removed.

Rewrites (13 files) to match reality:
- Drop the fake '% complete' figures everywhere in favor of Implemented /
  In-Progress / Planned with concrete endpoint/feature lists.
- Phase 2.8 -> Implemented; add /api/interactions/* and /api/auth/{refresh,
  logout} to the endpoint lists; fix 'Rust 1.93' -> edition 2021.
- Add a Security section (token_version validation, hashed refresh-token
  persistence, fail-fast config, real-IP audit) and correct the test-coverage
  and deployment claims to reality.
- New canonical docs/development/CI-CD.md (4 jobs: format/clippy/build/test,
  mongo service, no docker-build + why).
- README, docs/README, product/{STATUS,ROADMAP,PROGRESS,README,introduction},
  implementation/README, development/README, testing/README, AI_AGENT_GUIDE,
  .cursorrules, .gooserules all updated.

Verified: greps for 'Phase 2.8 (Planning)', 'PLANNING (0%)', 'Rust 1.93',
'91%/10%/85% complete', and 'docker-build' return nothing outside docs/archive;
all internal doc links resolve; backend/src untouched (cargo build clean).
2026-06-27 16:02:16 -03:00

2 KiB

CI/CD Pipeline

The CI pipeline runs on Forgejo Actions and is defined in .forgejo/workflows/lint-and-build.yml.

Triggers: push and pull request to main and develop.

Jobs

Four jobs, each running in a rust:latest container on the docker runner:

Job Depends on Command Purpose
format cargo fmt --all -- --check Strict formatting check (must pass)
clippy cargo clippy --all-targets --all-features Lint (non-strict — warnings shown, don't fail)
build format, clippy cargo build --release Release build
test format, clippy cargo test --all-targets Unit + integration tests

format and clippy run in parallel; build and test run after both pass.

The test job

Integration tests need a live MongoDB, so the test job provisions a mongo:7 service container and sets MONGODB_URI=mongodb://mongo:27017. The tests target an isolated per-run database and skip gracefully if Mongo is unreachable, so the job stays green even on runners that can't provide service containers.

Docker builds are NOT in CI

There is deliberately no docker-build job. The Forgejo act runner creates isolated networks per job, which breaks every Docker-in-CI approach tried (socket mount, DinD, Buildx, direct host access). Docker images are built separately:

  • Locally: docker build -f backend/docker/Dockerfile backend/
  • On Solaria: see ../deployment/

Running CI checks locally

Use scripts/test-ci-locally.sh, which runs the same format/clippy/build/test sequence. For the integration tests it needs a reachable MongoDB:

docker run -d -p 27017:27017 --name mongo-test mongo:7
./scripts/test-ci-locally.sh

Dashboard

CI runs: http://gitea.solivarez.com.ar/alvaro/normogen/actions


Last Updated: 2026-06-27