From 91b139e6f23a812c40936628b1f3c3498296b6c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20B=C5=82aszczyk?= Date: Mon, 30 Oct 2023 11:26:50 +0100 Subject: [PATCH] fix: goreleaser use compiled binaries in release (#138) --- Dockerfile => .docker/Dockerfile-build | 0 .../Dockerfile-kubebuilder | 0 .docker/Dockerfile-release | 8 +++ .github/workflows/ci.yaml | 3 +- .goreleaser.yml | 64 +++++++++++++++++-- Makefile | 2 +- 6 files changed, 68 insertions(+), 9 deletions(-) rename Dockerfile => .docker/Dockerfile-build (100%) rename Dockerfile-kubebuilder => .docker/Dockerfile-kubebuilder (100%) create mode 100644 .docker/Dockerfile-release diff --git a/Dockerfile b/.docker/Dockerfile-build similarity index 100% rename from Dockerfile rename to .docker/Dockerfile-build diff --git a/Dockerfile-kubebuilder b/.docker/Dockerfile-kubebuilder similarity index 100% rename from Dockerfile-kubebuilder rename to .docker/Dockerfile-kubebuilder diff --git a/.docker/Dockerfile-release b/.docker/Dockerfile-release new file mode 100644 index 0000000..9435b28 --- /dev/null +++ b/.docker/Dockerfile-release @@ -0,0 +1,8 @@ +# Use distroless as minimal base image to package the manager binary +# Refer to https://github.com/GoogleContainerTools/distroless for more details +FROM gcr.io/distroless/static:nonroot +WORKDIR / +COPY manager . +USER 65532:65532 + +ENTRYPOINT ["/manager"] diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 338a08d..ade5896 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -50,8 +50,7 @@ jobs: - '*.go' - 'PROJECT' docker: - - 'Dockerfile' - - 'Dockerfile-kubebuilder' + - '.docker/**' cicd-definitions: - '.github/workflows/**' - '.github/actions/**' diff --git a/.goreleaser.yml b/.goreleaser.yml index a3033f6..69aef78 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -7,17 +7,55 @@ before: - "go mod download" builds: - - flags: + - id: linux-amd64 + flags: - -a binary: manager env: - CGO_ENABLED=0 goarch: - amd64 - - 386 + goos: + - linux + - id: linux-arm64 + flags: + - -a + binary: manager + env: + - CGO_ENABLED=0 + goarch: - arm64 goos: - linux + - id: linux-i386 + flags: + - -a + binary: manager + env: + - CGO_ENABLED=0 + goarch: + - 386 + goos: + - linux + - id: darwin-amd64 + flags: + - -a + binary: manager + env: + - CGO_ENABLED=0 + goarch: + - amd64 + goos: + - darwin + - id: darwin-arm64 + flags: + - -a + binary: manager + env: + - CGO_ENABLED=0 + goarch: + - arm64 + goos: - darwin snapshot: @@ -25,14 +63,28 @@ snapshot: changelog: sort: asc + use: github-native dockers: - image_templates: - - "oryd/hydra-maester:v{{ .Major }}" - - "oryd/hydra-maester:v{{ .Major }}.{{ .Minor }}" - - "oryd/hydra-maester:v{{ .Major }}.{{ .Minor }}.{{ .Patch }}" - - "oryd/hydra-maester:{{ .ShortCommit }}" + - "oryd/hydra-maester:{{ .Tag }}-amd64" + - "oryd/hydra-maester:{{ .ShortCommit }}-amd64" - "oryd/hydra-maester:latest" + goarch: amd64 + build_flag_templates: + - "--platform=linux/amd64" + dockerfile: ".docker/Dockerfile-release" + ids: + - "linux-amd64" + - image_templates: + - "oryd/hydra-maester:{{ .Tag }}-arm64" + - "oryd/hydra-maester:{{ .ShortCommit }}-arm64" + goarch: arm64 + build_flag_templates: + - "--platform=linux/arm64" + dockerfile: ".docker/Dockerfile-release" + ids: + - "linux-arm64" release: prerelease: auto diff --git a/Makefile b/Makefile index bbc224d..ac35b28 100644 --- a/Makefile +++ b/Makefile @@ -169,7 +169,7 @@ generate: controller-gen # Build the docker image .PHONY: docker-build-notest docker-build-notest: - docker build . -t ${IMG} + docker build . -t ${IMG} -f .docker/Dockerfile-build @echo "updating kustomize image patch file for manager resource" sed -i'' -e 's@image: .*@image: '"${IMG}"'@' ./config/default/manager_image_patch.yaml