Migrate CI/CD from GitHub Actions to Forgejo Actions #1

Merged
chrisp merged 4 commits from chore/forgejo-actions into main 2026-05-22 01:39:03 +00:00
Owner

Summary

  • Moves workflows from .github/ to .forgejo/ so they only run on Forgejo (GitHub ignores .forgejo/)
  • Drops label-subissues.yaml — it relies on GitHub-specific GraphQL API and has no Forgejo equivalent
  • Replaces styfle/cancel-workflow-action with native concurrency: block; cancel-in-progress only for non-main branches to avoid interrupting deploys mid-flight
  • Switches all uses: to full GitHub URLs (e.g. https://github.com/actions/checkout@v4) to bypass Forgejo's action mirror
  • Replaces Docker layer cache type=gha with type=registry using the existing container registry
  • Adds timeout-minutes to all jobs

Variables and secrets required in Forgejo

Secrets (Settings → Actions → Secrets): REGISTRY_USERNAME, REGISTRY_PASSWORD, DEPLOY_HOST, DEPLOY_PORT, DEPLOY_USER, DEPLOY_KEY

Variables (Settings → Actions → Variables): CONTAINER_REGISTRY

Test plan

  • Open a PR — test, typecheck, and lint jobs should run
  • Merge to mainbuild and deploy jobs should also run
  • Confirm Docker build pushes image and buildcache tag to registry
  • Confirm SSH deploy step runs on the server
## Summary - Moves workflows from `.github/` to `.forgejo/` so they only run on Forgejo (GitHub ignores `.forgejo/`) - Drops `label-subissues.yaml` — it relies on GitHub-specific GraphQL API and has no Forgejo equivalent - Replaces `styfle/cancel-workflow-action` with native `concurrency:` block; cancel-in-progress only for non-main branches to avoid interrupting deploys mid-flight - Switches all `uses:` to full GitHub URLs (e.g. `https://github.com/actions/checkout@v4`) to bypass Forgejo's action mirror - Replaces Docker layer cache `type=gha` with `type=registry` using the existing container registry - Adds `timeout-minutes` to all jobs ## Variables and secrets required in Forgejo **Secrets** (Settings → Actions → Secrets): `REGISTRY_USERNAME`, `REGISTRY_PASSWORD`, `DEPLOY_HOST`, `DEPLOY_PORT`, `DEPLOY_USER`, `DEPLOY_KEY` **Variables** (Settings → Actions → Variables): `CONTAINER_REGISTRY` ## Test plan - [ ] Open a PR — `test`, `typecheck`, and `lint` jobs should run - [ ] Merge to `main` — `build` and `deploy` jobs should also run - [ ] Confirm Docker build pushes image and `buildcache` tag to registry - [ ] Confirm SSH deploy step runs on the server
chrisp added 1 commit 2026-05-21 22:56:47 +00:00
Migrate CI/CD from GitHub Actions to Forgejo Actions
Some checks failed
🚀 Deploy / 🧪 Test (pull_request) Failing after 2m57s
🚀 Deploy / ʦ TypeScript (pull_request) Failing after 10m55s
🚀 Deploy / 🔍 Lint (pull_request) Successful in 10m36s
🚀 Deploy / 🐳 Build (pull_request) Has been skipped
🚀 Deploy / 🚀 Deploy (pull_request) Has been skipped
9ac7fb5b31
- Move workflows from .github/ to .forgejo/ so they only run on Forgejo
- Replace styfle/cancel-workflow-action with native concurrency block
- Use full GitHub URLs for all third-party actions to bypass mirror
- Switch Docker layer cache from type=gha to type=registry
- Drop label-subissues workflow (relies on GitHub-specific GraphQL API)
- Add timeout-minutes to all jobs; cancel-in-progress only for non-main branches

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
chrisp added 1 commit 2026-05-21 23:14:30 +00:00
Fix postgres service for Forgejo Docker runner
Some checks failed
🚀 Deploy / 🧪 Test (pull_request) Failing after 21m9s
🚀 Deploy / ʦ TypeScript (pull_request) Failing after 11m24s
🚀 Deploy / 🔍 Lint (pull_request) Successful in 10m2s
🚀 Deploy / 🐳 Build (pull_request) Has been skipped
🚀 Deploy / 🚀 Deploy (pull_request) Has been skipped
0b8f7edc08
Remove host port binding (conflicts with local postgres on runner) and
use service name hostname instead of localhost for DATABASE_URL.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
chrisp added 1 commit 2026-05-22 00:01:06 +00:00
Add oxlint config and fix unicorn/no-array-sort violation
Some checks failed
🚀 Deploy / ʦ TypeScript (pull_request) Has been cancelled
🚀 Deploy / 🔍 Lint (pull_request) Has been cancelled
🚀 Deploy / 🐳 Build (pull_request) Has been cancelled
🚀 Deploy / 🚀 Deploy (pull_request) Has been cancelled
🚀 Deploy / 🧪 Test (pull_request) Has been cancelled
2192f1790d
Promote unicorn/no-array-sort to error in oxlint.json and replace
[...teams].sort() with teams.toSorted() in discord.ts.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
chrisp added 1 commit 2026-05-22 00:04:16 +00:00
Remove setup-node from CI jobs
All checks were successful
🚀 Deploy / 🧪 Test (pull_request) Successful in 1m26s
🚀 Deploy / ʦ TypeScript (pull_request) Successful in 1m17s
🚀 Deploy / 🔍 Lint (pull_request) Successful in 48s
🚀 Deploy / 🐳 Build (pull_request) Has been skipped
🚀 Deploy / 🚀 Deploy (pull_request) Has been skipped
b9a1ea2cb4
Node 20 is already in the node:20-bookworm runner image; setup-node
was hanging ~5min trying to reach an unconfigured npm cache service.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
chrisp merged commit 85b3317f9a into main 2026-05-22 01:39:03 +00:00
Sign in to join this conversation.
No description provided.