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:
		
						commit
						68d5d6d367
					
				
							
								
								
									
										39
									
								
								Dockerfile
								
								
								
								
							
							
						
						
									
										39
									
								
								Dockerfile
								
								
								
								
							|  | @ -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" ] | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue