47c3ba63f8
Flip Status: Draft -> Active for the 23 PRDs whose work has shipped to main (including 0027, now that PR #95 has merged). Leaves the terminal-status PRDs unchanged: 0007 and 0010 (Superseded) and 0014 (Retargeted) were replaced, not shipped as-is. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
70 lines
2.7 KiB
Markdown
70 lines
2.7 KiB
Markdown
# PRD 0002: Test pipeline on Gitea Actions
|
|
|
|
- **Status:** Active
|
|
- **Author:** didericis
|
|
- **Created:** 2026-05-08
|
|
|
|
## Summary
|
|
|
|
Run the project's test suite on every push to a PR via Gitea Actions, surfacing pass/fail on the PR.
|
|
|
|
## Problem
|
|
|
|
There is no automated test run today — tests only run when the author remembers to invoke them locally before pushing or merging. The CI loop is missing: nothing reruns the suite on each push, and there's no shared signal for whether a branch is green.
|
|
|
|
## Goals / Success Criteria
|
|
|
|
- Every PR shows a passing/failing tests check from Gitea Actions, updated per push.
|
|
- Pushing a fix to a red PR re-runs the workflow automatically and turns it green without manual re-trigger.
|
|
- The workflow file is committed in-tree.
|
|
|
|
## Non-goals
|
|
|
|
- Pipeline speed / wall-clock optimization.
|
|
- Matrix testing across Python versions or operating systems.
|
|
- Notifications (Slack, email, etc.) on failure.
|
|
- Caching dependencies between runs.
|
|
|
|
## Scope
|
|
|
|
### In scope
|
|
|
|
- A Gitea Actions workflow that runs `tests/run_tests.py` (full suite — unit + integration where the runner's docker topology supports it) on every push event affecting a PR, plus pushes to `main`.
|
|
- A status badge in the README so contributors can see CI state at a glance.
|
|
- Whatever dependency-manifest changes are needed to make the runner execute `tests/run_tests.py` cleanly.
|
|
|
|
### Out of scope
|
|
|
|
- Branch-protection rules / merge gating on `main`.
|
|
- Deploy / release pipeline (publishing images, tagging releases, etc.).
|
|
- Coverage reporting or quality gates.
|
|
- Lint / format checks beyond the test suite.
|
|
|
|
## Proposed Design
|
|
|
|
### New services / components
|
|
|
|
- `.gitea/workflows/test.yml` — workflow definition. Triggers on `pull_request` and `push` to `main`. Runs `tests/run_tests.py` (stdlib `unittest`; no external test deps required).
|
|
|
|
### Existing code touched
|
|
|
|
- `tests/` — a small number of integration tests are skipped under `GITEA_ACTIONS=true` because act_runner's docker socket mount breaks their host-loopback assumptions. Skips are local to the affected tests.
|
|
- `README.md` — adds a CI status badge.
|
|
|
|
### Data model changes
|
|
|
|
None.
|
|
|
|
### External dependencies
|
|
|
|
- Relies on a Gitea Actions runner registered to (or instance-scoped above) the repo on `gitea.dideric.is`.
|
|
|
|
## Open questions
|
|
|
|
- The two `GITEA_ACTIONS`-skipped integration tests could be rewritten to discover the container's IP via `docker inspect` rather than relying on host port mapping; that would let them pass under the socket-mount topology too. Filed as a follow-up, not in this PRD.
|
|
|
|
## References
|
|
|
|
- `tests/run_tests.py` — the runner CI will invoke.
|
|
- PRD 0001 (`docs/prds/0001-per-agent-egress-proxy-via-pipelock.md`) — prior PRD for repo numbering reference.
|