From f973eeb31ad75be96333313cceb60bfdfd7e3a8f Mon Sep 17 00:00:00 2001 From: Nicko Guyer Date: Tue, 21 Jun 2022 10:44:20 -0400 Subject: [PATCH 1/3] Add multiarch docker image build support Signed-off-by: Nicko Guyer --- .github/workflows/docker_main.yml | 31 ++++++++++++++++--------------- Makefile | 2 ++ docker_build.sh | 6 ++++-- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/.github/workflows/docker_main.yml b/.github/workflows/docker_main.yml index 8a0263f4dc..fac90c03ea 100644 --- a/.github/workflows/docker_main.yml +++ b/.github/workflows/docker_main.yml @@ -13,6 +13,18 @@ jobs: with: fetch-depth: 0 + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v2 + + - name: Set up qemu emulators + run: | + docker run --rm --privileged tonistiigi/binfmt --install all + + - name: Docker login + run: | + echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin + - name: Set build tag id: build_tag_generator run: | @@ -28,18 +40,7 @@ jobs: --label commit=$GITHUB_SHA \ --label build_date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \ --label tag=${{ steps.build_tag_generator.outputs.BUILD_TAG }} \ - --tag ghcr.io/hyperledger/firefly:${{ steps.build_tag_generator.outputs.BUILD_TAG }}" \ - docker - - - name: Tag release - run: docker tag ghcr.io/hyperledger/firefly:${{ steps.build_tag_generator.outputs.BUILD_TAG }} ghcr.io/hyperledger/firefly:head - - - name: Push docker image - run: | - echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin - docker push ghcr.io/hyperledger/firefly:${{ steps.build_tag_generator.outputs.BUILD_TAG }} - - - name: Push head tag - run: | - echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin - docker push ghcr.io/hyperledger/firefly:head + --tag ghcr.io/hyperledger/firefly:${{ steps.build_tag_generator.outputs.BUILD_TAG }} \ + --tag ghcr.io/hyperledger/firefly:head \ + --push" \ + docker-multiarch \ No newline at end of file diff --git a/Makefile b/Makefile index f420d2448d..c72b0a130a 100644 --- a/Makefile +++ b/Makefile @@ -99,5 +99,7 @@ manifest: ./manifestgen.sh docker: ./docker_build.sh $(DOCKER_ARGS) +docker-multiarch: + ./docker_build.sh --platform linux/amd64,linux/arm64 $(DOCKER_ARGS) docs: .ALWAYS cd docs && bundle install && bundle exec jekyll build && bundle exec htmlproofer --disable-external --allow-hash-href --assume-extension ./_site --url-swap '^/firefly/:/' --url-ignore /127.0.0.1/,/localhost/ \ No newline at end of file diff --git a/docker_build.sh b/docker_build.sh index 45b65f5425..6253c314be 100755 --- a/docker_build.sh +++ b/docker_build.sh @@ -36,7 +36,8 @@ echo BASE_TAG=$BASE_TAG echo UI_TAG=$UI_TAG echo UI_RELEASE=$UI_RELEASE -docker build \ +docker buildx create --name firefly --use +docker buildx build \ -t hyperledger/firefly \ --build-arg FIREFLY_BUILDER_TAG=$FIREFLY_BUILDER_TAG \ --build-arg FABRIC_BUILDER_TAG=$FABRIC_BUILDER_TAG \ @@ -46,4 +47,5 @@ docker build \ --build-arg UI_TAG=$UI_TAG \ --build-arg UI_RELEASE=$UI_RELEASE \ $@ \ - . \ No newline at end of file + . +docker buildx rm firefly \ No newline at end of file From 1b5493c233e100010b219d8414723837a67fdcf3 Mon Sep 17 00:00:00 2001 From: Nicko Guyer Date: Wed, 22 Jun 2022 10:05:20 -0400 Subject: [PATCH 2/3] Update docker release job for multiarch builds Signed-off-by: Nicko Guyer --- .github/workflows/docker_release.yml | 79 ++++++++++------------------ docker_build.sh | 2 +- 2 files changed, 29 insertions(+), 52 deletions(-) diff --git a/.github/workflows/docker_release.yml b/.github/workflows/docker_release.yml index ca85c396f4..b708187fe4 100644 --- a/.github/workflows/docker_release.yml +++ b/.github/workflows/docker_release.yml @@ -12,67 +12,44 @@ jobs: with: fetch-depth: 0 - - name: Build - run: | - make DOCKER_ARGS="\ - --build-arg BUILD_VERSION=${GITHUB_REF##*/} \ - --build-arg GIT_REF=$GITHUB_SHA \ - --label commit=$GITHUB_SHA \ - --label build_date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \ - --label tag=${GITHUB_REF##*/} \ - --tag ghcr.io/hyperledger/firefly:${GITHUB_REF##*/} \ - --tag ghcr.io/hyperledger/firefly:head" \ - docker - - - name: Push docker image - run: | - echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin - docker push ghcr.io/hyperledger/firefly:${GITHUB_REF##*/} - - - name: Push head tag - run: | - echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin - docker push ghcr.io/hyperledger/firefly:head - - - name: Tag latest release - if: github.event.action == 'released' - run: docker tag ghcr.io/hyperledger/firefly:${GITHUB_REF##*/} ghcr.io/hyperledger/firefly:latest - - - name: Push latest tag + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v2 + + - name: Set up qemu emulators + run: | + docker run --rm --privileged tonistiigi/binfmt --install all + + - name: Set latest tag if: github.event.action == 'released' run: | - echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin - docker push ghcr.io/hyperledger/firefly:latest + echo "DOCKER_TAGS=${{ env.DOCKER_TAGS }} --tag ghcr.io/hyperledger/firefly:latest" >> $GITHUB_ENV - - name: Tag alpha release + - name: Set alpha tag if: github.event.action == 'prereleased' && contains(github.ref, 'alpha') run: | - docker tag ghcr.io/hyperledger/firefly:${GITHUB_REF##*/} ghcr.io/hyperledger/firefly:alpha + echo "DOCKER_TAGS=${{ env.DOCKER_TAGS }} --tag ghcr.io/hyperledger/firefly:alpha" >> $GITHUB_ENV - - name: Push alpha tag - if: github.event.action == 'prereleased' && contains(github.ref, 'alpha') - run: | - echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin - docker push ghcr.io/hyperledger/firefly:alpha - - - name: Tag beta release - if: github.event.action == 'prereleased' && contains(github.ref, 'beta') - run: | - docker tag ghcr.io/hyperledger/firefly:${GITHUB_REF##*/} ghcr.io/hyperledger/firefly:beta - - - name: Push beta tag + - name: Set beta tag if: github.event.action == 'prereleased' && contains(github.ref, 'beta') run: | - echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin - docker push ghcr.io/hyperledger/firefly:beta + echo "DOCKER_TAGS=${{ env.DOCKER_TAGS }} --tag ghcr.io/hyperledger/firefly:beta" >> $GITHUB_ENV - - name: Tag rc release + - name: Set rc tag if: github.event.action == 'prereleased' && contains(github.ref, 'rc') run: | - docker tag ghcr.io/hyperledger/firefly:${GITHUB_REF##*/} ghcr.io/hyperledger/firefly:rc + echo "DOCKER_TAGS=${{ env.DOCKER_TAGS }} --tag ghcr.io/hyperledger/firefly:rc" >> $GITHUB_ENV - - name: Push rc tag - if: github.event.action == 'prereleased' && contains(github.ref, 'rc') + - name: Build run: | - echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin - docker push ghcr.io/hyperledger/firefly:rc \ No newline at end of file + make DOCKER_ARGS="\ + --build-arg BUILD_VERSION=${GITHUB_REF##*/} \ + --build-arg GIT_REF=$GITHUB_SHA \ + --label commit=$GITHUB_SHA \ + --label build_date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \ + --label tag=${GITHUB_REF##*/} \ + --tag ghcr.io/hyperledger/firefly:${GITHUB_REF##*/} \ + --tag ghcr.io/hyperledger/firefly:head \ + ${{ env.DOCKER_TAGS }}" \ + --push + docker-multiarch diff --git a/docker_build.sh b/docker_build.sh index 6253c314be..11fead5422 100755 --- a/docker_build.sh +++ b/docker_build.sh @@ -48,4 +48,4 @@ docker buildx build \ --build-arg UI_RELEASE=$UI_RELEASE \ $@ \ . -docker buildx rm firefly \ No newline at end of file +docker buildx rm firefly \ No newline at end of file From 6c8151908570209a3670b8a1128d1c0a6fcd41f1 Mon Sep 17 00:00:00 2001 From: Nicko Guyer Date: Wed, 22 Jun 2022 11:32:50 -0400 Subject: [PATCH 3/3] Fix docker build for E2E Signed-off-by: Nicko Guyer --- test/e2e/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/run.sh b/test/e2e/run.sh index 8368e7ccc7..54991d949a 100755 --- a/test/e2e/run.sh +++ b/test/e2e/run.sh @@ -88,7 +88,7 @@ if [ "$CREATE_STACK" == "true" ]; then fi if [ "$BUILD_FIREFLY" == "true" ]; then - make -C ../.. docker + make -C ../.. DOCKER_ARGS="--load" docker checkOk $? fi