Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
36ae1e99ca Set forgejo-runner kustomization tag to branch-built image
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 10:49:44 -07:00
12d83baa61 Build forgejo-runner container locally via native Dagger pipeline
Replace upstream code.forgejo.org/forgejo/runner image with a locally
built container using the container.py pattern (Go + Alpine runtime).
Kustomization tag is a placeholder until CI builds the image.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 09:30:43 -07:00
3 changed files with 70 additions and 1 deletions

View file

@ -10,7 +10,8 @@ resources:
images: images:
- name: code.forgejo.org/forgejo/runner - name: code.forgejo.org/forgejo/runner
newTag: "12.7.3" newName: registry.ops.eblu.me/blumeops/forgejo-runner
newTag: v12.7.3-12d83ba
- name: docker - name: docker
newTag: 27-dind newTag: 27-dind

View file

@ -0,0 +1,67 @@
"""Forgejo Runner — native Dagger build.
Two-stage build: Go (static binary with CGO for SQLite), Alpine (runtime).
Source cloned from forge mirror.
"""
import dagger
from dagger import dag
from blumeops.containers import (
alpine_runtime,
clone_from_forge,
oci_labels,
)
VERSION = "12.7.3"
async def build(src: dagger.Directory) -> dagger.Container:
source = clone_from_forge("forgejo-runner", f"v{VERSION}")
# Stage 1: Build Go binary (static, CGO enabled for SQLite)
ldflags = (
'-extldflags "-static" -s -w'
f' -X "code.forgejo.org/forgejo/runner/v12/internal/pkg/ver.version=v{VERSION}"'
)
backend = (
dag.container()
.from_("golang:alpine3.22")
.with_exec(["apk", "add", "--no-cache", "build-base", "git"])
.with_directory("/app", source)
.with_workdir("/app")
.with_env_variable("CGO_ENABLED", "1")
.with_env_variable("CGO_CFLAGS", "-DSQLITE_MAX_VARIABLE_NUMBER=32766")
.with_exec(
[
"go",
"build",
"-tags=netgo osusergo",
f"-ldflags={ldflags}",
"-o",
"/forgejo-runner",
".",
]
)
)
# Stage 2: Runtime
runtime = alpine_runtime(
extra_apk=["git", "bash", "ca-certificates"],
uid=1000,
gid=1000,
username="runner",
)
runtime = oci_labels(
runtime,
title="Forgejo Runner",
description="A runner for Forgejo Actions",
version=VERSION,
)
return (
runtime.with_file("/bin/forgejo-runner", backend.file("/forgejo-runner"))
.with_env_variable("HOME", "/data")
.with_user("1000:1000")
.with_workdir("/data")
.with_default_args(args=["/bin/forgejo-runner"])
)

View file

@ -0,0 +1 @@
Build forgejo-runner container locally via native Dagger pipeline instead of pulling from upstream.