From 1559075b4556aeb8eb2da7b05d8b6893a6ba0fd2 Mon Sep 17 00:00:00 2001 From: lystopad Date: Mon, 16 Sep 2024 17:58:47 +0200 Subject: [PATCH] Add support for build for linux/amd64 (v1) [binaries/docker] (#12003) Changes: - compile new binaries for AMD64 microarchitecture level 1 (linux/amd64) - explicitly use v2 suffix in binaries and docker images build for AMD64 microarchitecture level 2 After that change there will be multi-platform docker image with 3 OS/Arch: - linux/arm64 - linux/amd64 - linux/amd64/v2 as well as a new release artifact. --- .github/workflows/release.yml | 13 +++++++++++-- .goreleaser.yml | 32 +++++++++++++++++++++++++++++--- Dockerfile.release | 3 ++- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d1b08fd368c..08bf0cc7363 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -104,7 +104,7 @@ jobs: -e APPLICATION=${{ env.APPLICATION }} \ -v $(pwd):/${{ env.APPLICATION}} \ -v /var/run/docker.sock:/var/run/docker.sock \ - ${{ env.BUILDER_IMAGE }} release --clean --skip=validate,announce,publish + ${{ env.BUILDER_IMAGE }} release --timeout 60m0s --clean --skip=validate,announce,publish echo "DEBUG: ls -lao in the working directory" ls -lao echo "DEBUG: content of the dist/ directory" @@ -137,7 +137,7 @@ jobs: --label org.opencontainers.image.description="${{ env.LABEL_DESCRIPTION }}" \ --label org.opencontainers.image.base.name="${{ env.DOCKER_BASE_IMAGE }}" \ --push \ - --platform linux/amd64/v2,linux/arm64 . + --platform linux/amd64,linux/amd64/v2,linux/arm64 . - name: Upload artifact -- linux/arm64 uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a ## v4.3.6 @@ -157,6 +157,15 @@ jobs: compression-level: 0 if-no-files-found: error + - name: Upload artifact -- linux/amd64/v2 + uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a ## v4.3.6 + with: + name: ${{ env.APPLICATION }}_${{ inputs.release_version }}_linux_amd64v2.tar.gz + path: ./dist/${{ env.APPLICATION }}_${{ inputs.release_version }}_linux_amd64v2.tar.gz + retention-days: 1 + compression-level: 0 + if-no-files-found: error + - name: Upload artifact -- darwin/arm64 uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a ## v4.3.6 with: diff --git a/.goreleaser.yml b/.goreleaser.yml index 0e0ff98df9b..03e96ea0e6d 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -404,13 +404,14 @@ builds: ## End Darwin ARM64 -## Linux AMD64: +## Linux AMD64 (v1, v2): - id: linux-amd64-erigon main: ./cmd/erigon binary: erigon goos: [ linux ] goarch: [ amd64 ] goamd64: + - v1 - v2 env: - CC=x86_64-linux-gnu-gcc @@ -431,6 +432,7 @@ builds: goos: [ linux ] goarch: [ amd64 ] goamd64: + - v1 - v2 env: - CC=x86_64-linux-gnu-gcc @@ -451,6 +453,7 @@ builds: goos: [ linux ] goarch: [ amd64 ] goamd64: + - v1 - v2 env: - CC=x86_64-linux-gnu-gcc @@ -471,6 +474,7 @@ builds: goos: [ linux ] goarch: [ amd64 ] goamd64: + - v1 - v2 env: - CC=x86_64-linux-gnu-gcc @@ -491,6 +495,7 @@ builds: goos: [ linux ] goarch: [ amd64 ] goamd64: + - v1 - v2 env: - CC=x86_64-linux-gnu-gcc @@ -511,6 +516,7 @@ builds: goos: [ linux ] goarch: [ amd64 ] goamd64: + - v1 - v2 env: - CC=x86_64-linux-gnu-gcc @@ -531,6 +537,7 @@ builds: goos: [ linux ] goarch: [ amd64 ] goamd64: + - v1 - v2 env: - CC=x86_64-linux-gnu-gcc @@ -551,6 +558,7 @@ builds: goos: [ linux ] goarch: [ amd64 ] goamd64: + - v1 - v2 env: - CC=x86_64-linux-gnu-gcc @@ -571,6 +579,7 @@ builds: goos: [ linux ] goarch: [ amd64 ] goamd64: + - v1 - v2 env: - CC=x86_64-linux-gnu-gcc @@ -591,6 +600,7 @@ builds: goos: [ linux ] goarch: [ amd64 ] goamd64: + - v1 - v2 env: - CC=x86_64-linux-gnu-gcc @@ -604,7 +614,7 @@ builds: ldflags: - -s -w -extldflags "-static" - -X {{ .Env.PACKAGE }}/params.GitCommit={{ .Env.GIT_COMMIT }} -X {{ .Env.PACKAGE }}/params.GitBranch={{ .Env.GIT_BRANCH }} -X {{ .Env.PACKAGE }}/params.GitTag={{ .Env.GIT_TAG }} -## End of Linux AMD64 +## End of Linux AMD64 (v1, v2) ## Linux ARM64 @@ -1055,7 +1065,23 @@ archives: - linux-amd64-rpcdaemon - linux-amd64-sentry - linux-amd64-txpool - name_template: "{{ .Env.APPLICATION }}_{{ .Env.BUILD_VERSION }}_{{ .Os }}_{{ .Arch }}" + name_template: '{{ .Env.APPLICATION }}_{{ .Env.BUILD_VERSION }}_{{ .Os }}_{{ .Arch }}{{ if not (eq .Amd64 "v1") }}{{ .Amd64 }}{{ end }}' + wrap_in_directory: true + format: tar.gz + + - id: linux-amd64-v2 + builds: + - linux-amd64-v2-erigon + - linux-amd64-v2-downloader + - linux-amd64-v2-devnet + - linux-amd64-v2-evm + - linux-amd64-v2-caplin + - linux-amd64-v2-diag + - linux-amd64-v2-integration + - linux-amd64-v2-rpcdaemon + - linux-amd64-v2-sentry + - linux-amd64-v2-txpool + name_template: "{{ .Env.APPLICATION }}_{{ .Env.BUILD_VERSION }}_{{ .Os }}_{{ .Arch }}v2" wrap_in_directory: true format: tar.gz diff --git a/Dockerfile.release b/Dockerfile.release index 7c1b248bb35..c6cb976fc75 100644 --- a/Dockerfile.release +++ b/Dockerfile.release @@ -18,10 +18,11 @@ ARG RELEASE_DOCKER_BASE_IMAGE="alpine:3.20.1" \ ### Release Dockerfile FROM ${RELEASE_DOCKER_BASE_IMAGE} AS temporary ARG TARGETARCH \ + TARGETVARIANT="" \ VERSION=${VERSION} \ APPLICATION -COPY ./dist/${APPLICATION}_${VERSION}_linux_${TARGETARCH}.tar.gz /tmp/${APPLICATION}.tar.gz +COPY ./dist/${APPLICATION}_${VERSION}_linux_${TARGETARCH}${TARGETVARIANT}.tar.gz /tmp/${APPLICATION}.tar.gz RUN tar xzvf /tmp/${APPLICATION}.tar.gz -C /tmp && \ mv /tmp/${APPLICATION}_${VERSION}_linux_${TARGETARCH} /tmp/${APPLICATION}