Migrate CI from Forgejo Actions to op1st Tekton pipelines #133

Closed
opened 2026-05-12 06:40:46 +00:00 by goern · 1 comment
goern commented 2026-05-12 06:40:46 +00:00 (Migrated from codeberg.org)

Problem

Codeberg's Forgejo runners enforce strict per-job time limits. The Go build in .forgejo/workflows/go.yml keeps hitting them, leaving PRs without a usable CI signal.

Proposal

Move CI to op1st-pipelines (Tekton Pipelines-as-Code on OpenShift), following the patterns established in goern/epaper-service and feeldata/feeldata.app.

Scope

  • .tekton/repository.yaml — registers the repo with op1st-pipelines, reusing the codeberg-runner-openshift-pac + codeberg-org-op1st-pipelines secrets.
  • .tekton/on-push-to-main.yaml — PipelineRun on push to main.
  • .tekton/on-pull-request.yaml — PipelineRun on PR open/sync against main.
  • .tekton/tasks/go-ci.yaml — custom Task running make build followed by go test ./... on docker.io/library/golang:1.25.
  • Delete .forgejo/workflows/go.yml. .forgejo/workflows/release.yml stays (tag-driven, off the hot path).

Acceptance criteria

  • Push to main runs build + tests in op1st-pipelines.
  • PR events (open/sync) against main run build + tests in op1st-pipelines.
  • Old Forgejo Actions CI workflow removed.
  • Repository CR applied in op1st-pipelines namespace (out-of-band, on the cluster).

Status

Implementation landed locally in commit ae35a30. Tracked internally as bead forgejo-mcp-43k.

## Problem Codeberg's Forgejo runners enforce strict per-job time limits. The Go build in `.forgejo/workflows/go.yml` keeps hitting them, leaving PRs without a usable CI signal. ## Proposal Move CI to **op1st-pipelines** (Tekton Pipelines-as-Code on OpenShift), following the patterns established in [goern/epaper-service](https://codeberg.org/goern/epaper-service/src/branch/main/.tekton) and [feeldata/feeldata.app](https://codeberg.org/feeldata/feeldata.app/src/branch/main/.tekton). ### Scope - `.tekton/repository.yaml` — registers the repo with `op1st-pipelines`, reusing the `codeberg-runner-openshift-pac` + `codeberg-org-op1st-pipelines` secrets. - `.tekton/on-push-to-main.yaml` — PipelineRun on push to `main`. - `.tekton/on-pull-request.yaml` — PipelineRun on PR open/sync against `main`. - `.tekton/tasks/go-ci.yaml` — custom Task running `make build` followed by `go test ./...` on `docker.io/library/golang:1.25`. - Delete `.forgejo/workflows/go.yml`. `.forgejo/workflows/release.yml` stays (tag-driven, off the hot path). ### Acceptance criteria - [x] Push to `main` runs build + tests in op1st-pipelines. - [x] PR events (open/sync) against `main` run build + tests in op1st-pipelines. - [x] Old Forgejo Actions CI workflow removed. - [x] `Repository` CR applied in `op1st-pipelines` namespace (out-of-band, on the cluster). ## Status Implementation landed locally in commit `ae35a30`. Tracked internally as bead `forgejo-mcp-43k`.
goern commented 2026-05-12 07:57:06 +00:00 (Migrated from codeberg.org)

Done. Two migrations landed:

  • Go CI (build + test) — commit ae35a30, on main since session 1
  • openspec validate — PR #132 merged as c2b445a

Final .tekton/ layout:

.tekton/
├── repository.yaml
├── on-pull-request.yaml          # go build + test on PR
├── on-push-to-main.yaml          # go build + test on push to main
├── openspec-validate-pr.yaml     # openspec validate on PR (path-gated)
├── openspec-validate-push.yaml   # openspec validate on push to main (path-gated)
└── tasks/
    ├── go-ci.yaml
    └── openspec-validate.yaml

Cluster side: Repository CR codeberg-org-goern-forgejo-mcp in op1st-pipelines namespace. Codeberg webhook id 57471 → PaC controller. PAT scopes: repository + issue + user.

Both pipelines verified green end-to-end against PR 132 head commits.

Done. Two migrations landed: - **Go CI** (build + test) — commit `ae35a30`, on `main` since session 1 - **openspec validate** — PR #132 merged as `c2b445a` Final `.tekton/` layout: ``` .tekton/ ├── repository.yaml ├── on-pull-request.yaml # go build + test on PR ├── on-push-to-main.yaml # go build + test on push to main ├── openspec-validate-pr.yaml # openspec validate on PR (path-gated) ├── openspec-validate-push.yaml # openspec validate on push to main (path-gated) └── tasks/ ├── go-ci.yaml └── openspec-validate.yaml ``` Cluster side: `Repository` CR `codeberg-org-goern-forgejo-mcp` in `op1st-pipelines` namespace. Codeberg webhook id `57471` → PaC controller. PAT scopes: `repository` + `issue` + `user`. Both pipelines verified green end-to-end against PR 132 head commits.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
agentic-forges/forgejo-mcp#133
No description provided.