Refactor Dagger go_build() helper and standardize Alpine 3.23
Extend go_build() with buildmode and extra_env params, migrate miniflux and forgejo-runner to use it, and bump all Alpine bases from 3.22 to 3.23. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
99f78c8745
commit
352b95c141
4 changed files with 33 additions and 60 deletions
|
|
@ -5,11 +5,11 @@ Source cloned from forge mirror.
|
|||
"""
|
||||
|
||||
import dagger
|
||||
from dagger import dag
|
||||
|
||||
from blumeops.containers import (
|
||||
alpine_runtime,
|
||||
clone_from_forge,
|
||||
go_build,
|
||||
oci_labels,
|
||||
)
|
||||
|
||||
|
|
@ -20,29 +20,16 @@ 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",
|
||||
".",
|
||||
]
|
||||
)
|
||||
backend = go_build(
|
||||
source,
|
||||
"/forgejo-runner",
|
||||
tags="netgo osusergo",
|
||||
ldflags=(
|
||||
'-extldflags "-static" -s -w'
|
||||
f' -X "code.forgejo.org/forgejo/runner/v12/internal/pkg/ver.version=v{VERSION}"'
|
||||
),
|
||||
cgo_enabled=True,
|
||||
extra_env={"CGO_CFLAGS": "-DSQLITE_MAX_VARIABLE_NUMBER=32766"},
|
||||
)
|
||||
|
||||
# Stage 2: Runtime
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ Source cloned from forge mirror.
|
|||
"""
|
||||
|
||||
import dagger
|
||||
from dagger import dag
|
||||
|
||||
from blumeops.containers import (
|
||||
alpine_runtime,
|
||||
clone_from_forge,
|
||||
go_build,
|
||||
oci_labels,
|
||||
)
|
||||
|
||||
|
|
@ -20,25 +20,12 @@ async def build(src: dagger.Directory) -> dagger.Container:
|
|||
source = clone_from_forge("miniflux", VERSION)
|
||||
|
||||
# Stage 1: Build Go backend (PIE mode, matching upstream Makefile)
|
||||
ldflags = f"-s -w -X 'miniflux.app/v2/internal/version.Version={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_exec(
|
||||
[
|
||||
"go",
|
||||
"build",
|
||||
"-buildmode=pie",
|
||||
f"-ldflags={ldflags}",
|
||||
"-o",
|
||||
"/miniflux",
|
||||
".",
|
||||
]
|
||||
)
|
||||
backend = go_build(
|
||||
source,
|
||||
"/miniflux",
|
||||
buildmode="pie",
|
||||
ldflags=f"-s -w -X 'miniflux.app/v2/internal/version.Version={VERSION}'",
|
||||
cgo_enabled=True,
|
||||
)
|
||||
|
||||
# Stage 2: Runtime (uses Alpine's built-in nobody:65534)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue