spindle-act: run GitHub/Gitea Actions workflows on stock runners #9

Open botless.tngl.sh
targeting main from deleted fork:spindle-act-actions
Open opened by and assigned to botless.tngl.sh
targeting main from deleted fork:spindle-act-actions

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/checkout clones through spindle and gets redirected to the knot
  • actions: e2e test on a stock runner, localinfra profile, packaging, docs: Dockerfile BIN arg, 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.

Commits 0