From eaa661ec1f220d1adf002d33a5223c288157e243 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Loun=C3=A8s=20Ksouri?= Date: Fri, 12 Feb 2021 13:35:42 +0100 Subject: [PATCH] Add GitHub Action build on tag --- .github/workflows/on-tag.yml | 97 ++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 .github/workflows/on-tag.yml diff --git a/.github/workflows/on-tag.yml b/.github/workflows/on-tag.yml new file mode 100644 index 0000000..f1f3ae9 --- /dev/null +++ b/.github/workflows/on-tag.yml @@ -0,0 +1,97 @@ +name: Docker build on tag +env: + DOCKER_CLI_EXPERIMENTAL: enabled + TAG_FMT: '^refs/tags/(((.?[0-9]+){3,4}))$' + +on: + push: + tags: + - v[0-9]+.[0-9]+.[0-9]+ + - v[0-9]+.[0-9]+.[0-9]+-* + +jobs: + build: + runs-on: ubuntu-20.04 + name: Build and push nodejs and whirlpool images + steps: + - name: Login to Docker for building + run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin + + - name: Checkout project + uses: actions/checkout@v2 + + - name: Import environment variables + id: import-env + shell: bash + run: | + source ./docker/my-dojo/.env + echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV + echo "DOJO_NODEJS_VERSION_TAG=${DOJO_NODEJS_VERSION_TAG}" >> $GITHUB_ENV + echo "DOJO_WHIRLPOOL_VERSION_TAG=${DOJO_WHIRLPOOL_VERSION_TAG}" >> $GITHUB_ENV + + - name: Show set environment variables + run: | + printf " TAG: %s\n" "$TAG" + printf " DOJO_NODEJS_VERSION_TAG: %s\n" "$DOJO_NODEJS_VERSION_TAG" + printf " DOJO_WHIRLPOOL_VERSION_TAG: %s\n" "$DOJO_WHIRLPOOL_VERSION_TAG" + + - name: Set up QEMU + id: qemu + uses: docker/setup-qemu-action@v1 + with: + image: tonistiigi/binfmt:latest + platforms: all + + - name: Setup Docker buildx action + uses: docker/setup-buildx-action@v1 + id: buildx + + - name: Available platforms + run: echo ${{ steps.buildx.outputs.platforms }} + + - name: Cache Docker layers + uses: actions/cache@v2 + id: cache + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + + - name: Run Docker buildx against tag for dojo-node + run: | + docker buildx build \ + --cache-from "type=local,src=/tmp/.buildx-cache" \ + --cache-to "type=local,dest=/tmp/.buildx-cache" \ + --platform linux/amd64,linux/arm64 \ + --tag ${{ secrets.DOCKER_USERNAME }}/dojo-nodejs:$DOJO_NODEJS_VERSION_TAG \ + --output "type=registry" \ + --file ./docker/my-dojo/node/Dockerfile ./ + + - name: Run Docker buildx against latest for dojo-node + run: | + docker buildx build \ + --cache-from "type=local,src=/tmp/.buildx-cache" \ + --cache-to "type=local,dest=/tmp/.buildx-cache" \ + --platform linux/amd64,linux/arm64 \ + --tag ${{ secrets.DOCKER_USERNAME }}/dojo-nodejs:latest \ + --output "type=registry" \ + --file ./docker/my-dojo/node/Dockerfile ./ + + - name: Run Docker buildx against tag for dojo-whirlpool + run: | + docker buildx build \ + --cache-from "type=local,src=/tmp/.buildx-cache" \ + --cache-to "type=local,dest=/tmp/.buildx-cache" \ + --platform linux/amd64,linux/arm64 \ + --tag ${{ secrets.DOCKER_USERNAME }}/dojo-whirlpool:$DOJO_WHIRLPOOL_VERSION_TAG \ + --output "type=registry" ./docker/my-dojo/whirlpool + + - name: Run Docker buildx against latest for dojo-whirlpool + run: | + docker buildx build \ + --cache-from "type=local,src=/tmp/.buildx-cache" \ + --cache-to "type=local,dest=/tmp/.buildx-cache" \ + --platform linux/amd64,linux/arm64 \ + --tag ${{ secrets.DOCKER_USERNAME }}/dojo-whirlpool:latest \ + --output "type=registry" ./docker/my-dojo/whirlpool \ No newline at end of file