ci: migrate from Woodpecker CI to Forgejo Actions #1

Open
fmartingr wants to merge 14 commits from feat/forgejo-actions into master

2026-08-19

fix(ci): combine DinD with Playwright install without --with-deps
Some checks failed
CI / goreleaser-lint (pull_request) Successful in 13s
CI / format (pull_request) Successful in 3m4s
CI / lint (pull_request) Successful in 3m58s
CI / e2e (pull_request) Failing after 1m48s
CI / test (pull_request) Successful in 5m42s
CI / build (pull_request) Successful in 3m8s
DinD is required for testcontainers but breaks apt-based --with-deps;
install chromium only after the daemon is ready.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 15:28:08 +02:00
fix(ci): simplify e2e job and default testcontainers for CI
Some checks failed
CI / format (pull_request) Successful in 2m37s
CI / lint (pull_request) Successful in 3m9s
CI / build (pull_request) Has been cancelled
CI / goreleaser-lint (pull_request) Successful in 9s
CI / e2e (pull_request) Failing after 41s
CI / test (pull_request) Has been cancelled
Drop DinD service (breaks apt/playwright in the job container) and the
workflow env overrides that masked the e2e script config. Default Ryuk
disabled in e2e.sh for CI friendliness.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 15:23:04 +02:00
fix(ci): install Playwright system deps before browser download
Some checks failed
CI / goreleaser-lint (pull_request) Successful in 11s
CI / format (pull_request) Successful in 2m33s
CI / lint (pull_request) Successful in 3m20s
CI / build (pull_request) Has been cancelled
CI / test (pull_request) Has been cancelled
CI / e2e (pull_request) Failing after 1m35s
The --with-deps flag fails in the DinD job container; install Ubuntu
packages explicitly and download chromium from the e2e module context.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 15:16:15 +02:00
fix(ci): use Docker-in-Docker service for e2e testcontainers
Some checks failed
CI / goreleaser-lint (pull_request) Successful in 7s
CI / format (pull_request) Successful in 2m31s
CI / lint (pull_request) Successful in 3m9s
CI / e2e (pull_request) Failing after 1m31s
CI / build (pull_request) Has been cancelled
CI / test (pull_request) Has been cancelled
Mounting the host socket via container options is blocked by the runner,
so run a dind service and point DOCKER_HOST at it instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 15:10:27 +02:00
fix(ci): mount Docker socket for e2e job on Forgejo Actions
Some checks failed
CI / goreleaser-lint (pull_request) Successful in 10s
CI / format (pull_request) Successful in 2m28s
CI / lint (pull_request) Successful in 2m58s
CI / e2e (pull_request) Failing after 1s
CI / test (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
The e2e job runs testcontainers inside a ci-base container, which needs
the host Docker socket mounted. Also preserve TESTCONTAINERS_RYUK_DISABLED
from CI env and wait for archive UI before asserting in archive tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 15:05:13 +02:00
ci: align Forgejo Actions with migrated repo conventions
Some checks failed
CI / goreleaser-lint (pull_request) Successful in 7s
CI / format (pull_request) Successful in 1m14s
CI / lint (pull_request) Successful in 2m57s
CI / e2e (pull_request) Failing after 21s
CI / test (pull_request) Successful in 5m22s
CI / build (pull_request) Successful in 4m23s
Bump ci-base to 1.1.0 and actions to v7, add Docker buildx setup for
releases, restore dockers_v2 for multi-arch images, and set testcontainers
env vars on the e2e job.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 14:45:50 +02:00

2026-04-08

fix(e2e): make link creation reach test web server via shared network
Some checks failed
CI / goreleaser-lint (pull_request) Successful in 11s
CI / format (pull_request) Successful in 2m38s
CI / test (pull_request) Successful in 5m0s
CI / lint (pull_request) Successful in 3m5s
CI / build (pull_request) Successful in 3m16s
CI / e2e (pull_request) Failing after 28m15s
The test web server and Hako container previously ran on isolated Docker
networks, so Hako could not fetch URLs like http://localhost:32865 (the
host-mapped port) from inside its container. Most tests passed vacuously
because they only checked DOM containers; the Archive tests failed
because they tried to click an actual link item that was never created.

Changes:
- Add a shared Docker network so both containers can communicate by alias
- Test web server registers as hako-testserver and returns that as its URL
- Hako container joins the same network and can resolve the alias
- CreateLink now navigates to /home before each call so it can be invoked
  multiple times in a row (the form redirects to /links after submission)
- IsVisible uses .First() to avoid Playwright strict-mode errors when a
  selector matches multiple elements
- Archive tests use .link-item instead of the never-matching
  a[href*='/links/'] selector
- Bump Dockerfile.e2e Alpine to 3.23 to match the production Containerfile
2026-04-08 16:42:42 +02:00
fix: add missing mattn/go-sqlite3 dependency to e2e module
Some checks failed
CI / goreleaser-lint (pull_request) Successful in 12s
CI / format (pull_request) Successful in 2m52s
CI / lint (pull_request) Successful in 3m33s
CI / test (pull_request) Successful in 6m0s
CI / build (pull_request) Successful in 3m18s
CI / e2e (pull_request) Failing after 39m39s
2026-04-08 10:01:15 +02:00
ci: use e2e/go.mod for e2e job Go version
Some checks failed
CI / goreleaser-lint (pull_request) Successful in 7s
CI / format (pull_request) Successful in 2m36s
CI / lint (pull_request) Successful in 3m13s
CI / e2e (pull_request) Failing after 2m1s
CI / build (pull_request) Has been cancelled
CI / test (pull_request) Has been cancelled
2026-04-08 09:53:15 +02:00
ci: increase test timeout to 5m for CI with race detector
Some checks failed
CI / goreleaser-lint (pull_request) Successful in 10s
CI / lint (pull_request) Has been cancelled
CI / format (pull_request) Has been cancelled
CI / test (pull_request) Has been cancelled
CI / e2e (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
2026-04-08 09:52:19 +02:00

2026-04-07

fix: use all:dist embed directive to include dot-files
Some checks failed
CI / goreleaser-lint (pull_request) Successful in 15s
CI / format (pull_request) Successful in 2m19s
CI / lint (pull_request) Successful in 3m53s
CI / test (pull_request) Failing after 3m26s
CI / e2e (pull_request) Failing after 1m39s
CI / build (pull_request) Successful in 3m59s
2026-04-07 18:26:06 +02:00
fix: add .gitkeep to webapp/dist for go:embed compatibility
Some checks failed
CI / goreleaser-lint (pull_request) Successful in 5s
CI / lint (pull_request) Failing after 1m53s
CI / format (pull_request) Successful in 2m7s
CI / e2e (pull_request) Failing after 1m53s
CI / test (pull_request) Failing after 3m17s
CI / build (pull_request) Has been cancelled
2026-04-07 18:21:23 +02:00
fix: use master branch in CI workflow triggers
Some checks failed
CI / goreleaser-lint (pull_request) Successful in 6s
CI / e2e (pull_request) Failing after 1m40s
CI / test (pull_request) Failing after 3m14s
CI / build (pull_request) Successful in 4m31s
CI / format (pull_request) Successful in 1m15s
CI / lint (pull_request) Failing after 2m4s
2026-04-07 18:09:57 +02:00
ci: migrate from Woodpecker CI to Forgejo Actions
Replace Woodpecker CI pipelines with GitHub/Forgejo Actions workflows
using the ci-base:1.0.0 image. Simplify Makefile by removing unused
variables and adopting a cleaner help target. Switch goreleaser from
dockers_v2 to dockers + docker_manifests for per-arch image builds.
Update Containerfile to Alpine 3.23 and fix nfpm description.
2026-04-07 18:08:25 +02:00