2.7 KiB
2.7 KiB
PRD 0002: Test pipeline on Gitea Actions
- Status: Draft
- 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 tomain. - 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.pycleanly.
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 onpull_requestandpushtomain. Runstests/run_tests.py(stdlibunittest; no external test deps required).
Existing code touched
tests/— a small number of integration tests are skipped underGITEA_ACTIONS=truebecause 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 viadocker inspectrather 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.