Adds spindle-act, a spindle that runs GitHub/Gitea Actions workflows on stock Gitea act_runners (see ACTION.md).
Commits, in order:
- knot: read nested config dirs, share the pull trust rule
- gitea: vendor jobparser, workflowpattern and glob from Gitea
- actions: actions.db schema, runner registration and auth
- actions: detect workflows and schedule pipelines:
.gitea/workflows/.github/workflows,on:matching ported from Gitea, one pipeline per event, one job per job/matrix combination - actions: hand tasks to runners: FetchTask, UpdateTask, UpdateLog and the reaper, ported from Gitea's runner service
- actions: approve, cancel and retry pipelines
- actions: pipeline views and log streaming: QueryPipelines, FollowLogs
- actions: redirect checkouts to the knot:
actions/checkoutclones through spindle and gets redirected to the knot - actions: e2e test on a stock runner, localinfra profile, packaging, docs: Dockerfile
BINarg, flake builds both binaries, ACTION.md/PLAN.md/README.md
Testing: go test ./... passes. TestE2E passed against a stock Gitea runner (SPINDLE_ACT_E2E_RUNNER), nix build .#spindle-crowci builds both binaries, and the Docker image builds with --build-arg BIN=spindle-act. dev/localinfra/actions/ hasn't been run yet.