From 2a018c24086aeaca411162d847dc569fd5dc8bfe Mon Sep 17 00:00:00 2001 From: Aaron Spettl Date: Sun, 30 Jan 2022 11:09:35 +0100 Subject: [PATCH 1/6] Build multi-arch docker images with goreleaser --- .goreleaser.yaml | 36 ++++++++++++++++++++++++++++++++++++ Dockerfile.goreleaser | 5 +++++ 2 files changed, 41 insertions(+) create mode 100644 Dockerfile.goreleaser diff --git a/.goreleaser.yaml b/.goreleaser.yaml index f0715b1..2714108 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -22,6 +22,42 @@ archives: - README.md - LICENSE - example/** +dockers: + - goos: linux + goarch: amd64 + image_templates: + - "{{ .Env.DOCKERHUB_USERNAME }}/{{ .ProjectName }}:{{ .Tag }}-amd64" + dockerfile: Dockerfile.goreleaser + use: buildx + build_flag_templates: + - "--platform=linux/amd64" + - "--label=org.opencontainers.image.title={{ .ProjectName }}" + - "--label=org.opencontainers.image.url=https://github.com/aspettl/{{ .ProjectName }}" + - "--label=org.opencontainers.image.source=https://github.com/aspettl/{{ .ProjectName }}" + - "--label=org.opencontainers.image.revision={{ .FullCommit }}" + - "--label=org.opencontainers.image.version={{ .Version }}" + - "--label=org.opencontainers.image.created={{ .Date }}" + - "--label=org.opencontainers.image.licenses=MIT" + - goos: linux + goarch: arm64 + image_templates: + - "{{ .Env.DOCKERHUB_USERNAME }}/{{ .ProjectName }}:{{ .Tag }}-arm64v8" + dockerfile: Dockerfile.goreleaser + use: buildx + build_flag_templates: + - "--platform=linux/arm64/v8" + - "--label=org.opencontainers.image.title={{ .ProjectName }}" + - "--label=org.opencontainers.image.url=https://github.com/aspettl/{{ .ProjectName }}" + - "--label=org.opencontainers.image.source=https://github.com/aspettl/{{ .ProjectName }}" + - "--label=org.opencontainers.image.revision={{ .FullCommit }}" + - "--label=org.opencontainers.image.version={{ .Version }}" + - "--label=org.opencontainers.image.created={{ .Date }}" + - "--label=org.opencontainers.image.licenses=MIT" +docker_manifests: + - name_template: "{{ .Env.DOCKERHUB_USERNAME }}/{{ .ProjectName }}:{{ .Version }}" + image_templates: + - "{{ .Env.DOCKERHUB_USERNAME }}/{{ .ProjectName }}:{{ .Version }}-amd64" + - "{{ .Env.DOCKERHUB_USERNAME }}/{{ .ProjectName }}:{{ .Version }}-arm64v8" checksum: name_template: 'checksums.txt' snapshot: diff --git a/Dockerfile.goreleaser b/Dockerfile.goreleaser new file mode 100644 index 0000000..08a7b79 --- /dev/null +++ b/Dockerfile.goreleaser @@ -0,0 +1,5 @@ +FROM scratch + +COPY ccliwrapper / + +ENTRYPOINT ["/ccliwrapper"] From 3598b58a2c14061ab19eddb821de8ad7de08ec56 Mon Sep 17 00:00:00 2001 From: Aaron Spettl Date: Sun, 30 Jan 2022 11:10:09 +0100 Subject: [PATCH 2/6] Adjust goreleaser workflow --- .github/workflows/release.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 111b857..81a412a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,12 +8,23 @@ on: jobs: goreleaser: runs-on: ubuntu-latest + env: + DOCKER_CLI_EXPERIMENTAL: "enabled" steps: - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Set up Go uses: actions/setup-go@v2 with: @@ -26,4 +37,5 @@ jobs: version: latest args: release --rm-dist env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From f47f7301db125fa3457c9e002726ef07c3490535 Mon Sep 17 00:00:00 2001 From: Aaron Spettl Date: Sun, 30 Jan 2022 11:11:14 +0100 Subject: [PATCH 3/6] Do not build tags with old docker workflow anymore --- .github/workflows/docker.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6a32185..9e0c684 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -4,8 +4,6 @@ on: push: branches: - main - tags: - - '*' pull_request: branches: - main From a4811c1629711f7d79c5650431b1ed0972610705 Mon Sep 17 00:00:00 2001 From: Aaron Spettl Date: Sun, 30 Jan 2022 11:11:46 +0100 Subject: [PATCH 4/6] Also use scratch base image for edge builds --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 635f931..7f41e3d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,9 +6,9 @@ ADD . /go/src/app RUN go get -d -v ./... -RUN go build -o /go/bin/ccliwrapper +RUN CGO_ENABLED=0 go build -o /go/bin/ccliwrapper -FROM gcr.io/distroless/base-debian11 +FROM scratch COPY --from=build /go/bin/ccliwrapper / From bca8f417fc9b3cc65217ad920977a7c048aeb830 Mon Sep 17 00:00:00 2001 From: Aaron Spettl Date: Sun, 30 Jan 2022 11:40:25 +0100 Subject: [PATCH 5/6] Use default settings for changelog generation --- .goreleaser.yaml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 2714108..65f21f1 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -62,9 +62,3 @@ checksum: name_template: 'checksums.txt' snapshot: name_template: "{{ incpatch .Version }}-next" -changelog: - sort: asc - filters: - exclude: - - '^docs:' - - '^test:' From b8e6ebb28bb610e186ea621d5f29e3cd70776284 Mon Sep 17 00:00:00 2001 From: Aaron Spettl Date: Sun, 30 Jan 2022 11:42:02 +0100 Subject: [PATCH 6/6] Push "latest" manifest on release --- .goreleaser.yaml | 4 ++++ README.md | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 65f21f1..1542745 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -58,6 +58,10 @@ docker_manifests: image_templates: - "{{ .Env.DOCKERHUB_USERNAME }}/{{ .ProjectName }}:{{ .Version }}-amd64" - "{{ .Env.DOCKERHUB_USERNAME }}/{{ .ProjectName }}:{{ .Version }}-arm64v8" + - name_template: "{{ .Env.DOCKERHUB_USERNAME }}/{{ .ProjectName }}:latest" + image_templates: + - "{{ .Env.DOCKERHUB_USERNAME }}/{{ .ProjectName }}:{{ .Version }}-amd64" + - "{{ .Env.DOCKERHUB_USERNAME }}/{{ .ProjectName }}:{{ .Version }}-arm64v8" checksum: name_template: 'checksums.txt' snapshot: diff --git a/README.md b/README.md index 32fe16c..e2f6dce 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ are mounted. For the example config in this repo use (with `podman`): - podman run --rm -v $PWD/example:/example docker.io/aspettl/ccliwrapper:edge generate --config /example/ccliwrapper.yaml + podman run --rm -v $PWD/example:/example docker.io/aspettl/ccliwrapper:latest generate --config /example/ccliwrapper.yaml Note: `ccliwrapper` tries to create folders listed in the config file for mounts (and prints a warning if it does so). The simple reason is that a `run` command fails when