From 291e00c4050e0ad9ae3f87397bdfebb77492543a Mon Sep 17 00:00:00 2001 From: Gustavo Valverde Date: Mon, 28 Feb 2022 22:34:56 -0400 Subject: [PATCH] feat(build): add arm64 support with cross-compilation (#3659) * feat(build): add arrm64 support * fix(build): do not install google-compute-engine in arm64 This package is not available for this platform * fix(build): do not build arm64 for tests --- .github/workflows/cd.yml | 11 +++++++++++ .github/workflows/test.yml | 3 +-- .github/workflows/zcash-lightwalletd.yml | 11 +++++++++++ .github/workflows/zcash-params.yml | 11 +++++++++++ docker/Dockerfile | 4 +++- 5 files changed, 37 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 85c8f8677..aed719aca 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -42,8 +42,16 @@ jobs: with: credentials_json: ${{ secrets.GOOGLE_CREDENTIALS }} + - name: Set up QEMU + id: qemu + uses: docker/setup-qemu-action@v1 + with: + image: tonistiigi/binfmt:latest + platforms: all + # Setup Docker Buildx to allow use of docker cache layers from GH - name: Set up Docker Buildx + id: buildx uses: docker/setup-buildx-action@v1 - name: Login to Google Artifact Registry @@ -68,6 +76,9 @@ jobs: target: runtime context: . file: ./docker/Dockerfile + platforms: | + linux/amd64 + linux/arm64 tags: | ${{ env.GAR_BASE }}/${{ env.GITHUB_HEAD_REF_SLUG_URL || env.GITHUB_REF_SLUG_URL }}:latest ${{ env.GAR_BASE }}/${{ env.GITHUB_HEAD_REF_SLUG_URL || env.GITHUB_REF_SLUG_URL }}:${{ env.GITHUB_SHA_SHORT }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 090b64bc7..4869dd7ba 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -47,9 +47,8 @@ jobs: # Setup Docker Buildx to allow use of docker cache layers from GH - name: Set up Docker Buildx + id: buildx uses: docker/setup-buildx-action@v1 - with: - driver-opts: network=host - name: Login to Google Artifact Registry uses: docker/login-action@v1.12.0 diff --git a/.github/workflows/zcash-lightwalletd.yml b/.github/workflows/zcash-lightwalletd.yml index 17ecbc04f..5cb6fe522 100644 --- a/.github/workflows/zcash-lightwalletd.yml +++ b/.github/workflows/zcash-lightwalletd.yml @@ -46,8 +46,16 @@ jobs: with: credentials_json: ${{ secrets.GOOGLE_CREDENTIALS }} + - name: Set up QEMU + id: qemu + uses: docker/setup-qemu-action@v1 + with: + image: tonistiigi/binfmt:latest + platforms: all + # Setup Docker Buildx to allow use of docker cache layers from GH - name: Set up Docker Buildx + id: buildx uses: docker/setup-buildx-action@v1 - name: Login to Google Artifact Registry @@ -65,6 +73,9 @@ jobs: target: builder context: . file: ./zebra/docker/zcash-lightwalletd/Dockerfile + platforms: | + linux/amd64 + linux/arm64 tags: | ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:latest ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:${{ env.GITHUB_SHA_SHORT }} diff --git a/.github/workflows/zcash-params.yml b/.github/workflows/zcash-params.yml index 129cb64a2..82aebd0fd 100644 --- a/.github/workflows/zcash-params.yml +++ b/.github/workflows/zcash-params.yml @@ -40,8 +40,16 @@ jobs: with: credentials_json: ${{ secrets.GOOGLE_CREDENTIALS }} + - name: Set up QEMU + id: qemu + uses: docker/setup-qemu-action@v1 + with: + image: tonistiigi/binfmt:latest + platforms: all + # Setup Docker Buildx to allow use of docker cache layers from GH - name: Set up Docker Buildx + id: buildx uses: docker/setup-buildx-action@v1 - name: Login to Google Artifact Registry @@ -59,6 +67,9 @@ jobs: target: builder context: . file: ./docker/zcash-params/Dockerfile + platforms: | + linux/amd64 + linux/arm64 tags: | ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:latest ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:${{ env.GITHUB_SHA_SHORT }} diff --git a/docker/Dockerfile b/docker/Dockerfile index 6eb413b64..d8fc2502a 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -27,7 +27,8 @@ RUN apt-get -qq update && \ rm -rf /var/lib/apt/lists/* /tmp/* # Install google OS Config agent -RUN apt-get -qq update && \ +RUN if [ "$(uname -m)" != "aarch64" ]; then \ + apt-get -qq update && \ apt-get -qq install -y --no-install-recommends \ curl \ lsb-release \ @@ -36,6 +37,7 @@ RUN apt-get -qq update && \ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \ apt-get -qq update && \ apt-get -qq install -y --no-install-recommends google-osconfig-agent && \ + ; fi && \ rm -rf /var/lib/apt/lists/* /tmp/* # Optimize builds. In particular, regenerate-stateful-test-disks.yml was reaching the