Merge pull request #1773 from fluxcd/backport-1725-to-release/v1.5.x

[release/v1.5.x] Build controller without CGO
This commit is contained in:
Stefan Prodan 2025-04-10 10:25:59 +03:00 committed by GitHub
commit 68d5d6d367
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 37 deletions

View File

@ -1,30 +1,16 @@
ARG BASE_VARIANT=alpine
ARG GO_VERSION=1.23
ARG XX_VERSION=1.6.1
FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-${BASE_VARIANT} AS gostable
FROM gostable AS go-linux
# Build-base consists of build platform dependencies and xx.
# These will be used at current arch to yield execute the cross compilations.
FROM go-${TARGETOS} AS build-base
RUN apk add --no-cache clang lld
# Docker buildkit multi-arch build requires golang alpine
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine AS builder
# Copy the build utilities.
COPY --from=xx / /
# build-go-mod can still be cached at build platform architecture.
FROM build-base AS build
ARG TARGETPLATFORM
# Some dependencies have to installed
# for the target platform: https://github.com/tonistiigi/xx#go--cgo
RUN xx-apk add musl-dev gcc clang lld
# Configure workspace
WORKDIR /workspace
@ -46,19 +32,9 @@ COPY internal/ internal/
ARG TARGETPLATFORM
ARG TARGETARCH
# Reasons why CGO is in use:
# - The SHA1 implementation (sha1cd) used by go-git depends on CGO for
# performance reasons. See: https://github.com/pjbgf/sha1cd/issues/15
ENV CGO_ENABLED=1
RUN export CGO_LDFLAGS="-static -fuse-ld=lld" && \
xx-go build \
-ldflags "-s -w" \
-tags 'netgo,osusergo,static_build' \
-o /source-controller -trimpath main.go;
# Ensure that the binary was cross-compiled correctly to the target platform.
RUN xx-verify --static /source-controller
# build without specifing the arch
ENV CGO_ENABLED=0
RUN xx-go build -trimpath -a -o source-controller main.go
FROM alpine:3.21
@ -66,8 +42,7 @@ ARG TARGETPLATFORM
RUN apk --no-cache add ca-certificates \
&& update-ca-certificates
# Copy over binary from build
COPY --from=build /source-controller /usr/local/bin/
COPY --from=builder /workspace/source-controller /usr/local/bin/
USER 65534:65534
ENTRYPOINT [ "source-controller" ]

View File

@ -1,13 +1,10 @@
apiVersion: source.toolkit.fluxcd.io/v1beta1
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: large-repo
spec:
interval: 10m
timeout: 2m
url: https://github.com/hashgraph/hedera-mirror-node.git
url: https://github.com/nodejs/node.git
ref:
branch: main
ignore: |
/*
!/charts