Files
bot-bottle/docs/prds/0002-test-pipeline-on-gitea-actions.md
T
didericis 4694db1201
test / run tests/run_tests.py (push) Successful in 20s
PRD 0002: Test pipeline on Gitea Actions (#3)
2026-05-09 02:48:03 -04:00

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 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.