From 01f507fc1e6fe66184bd737a53329dfb4b43ca86 Mon Sep 17 00:00:00 2001 From: Robert Pirtle Date: Fri, 16 Dec 2022 12:07:43 -0800 Subject: [PATCH] add ci action for build & publish to docker hub (#1435) --- .github/workflows/ci-docker.yml | 47 +++++++++++++++++++++++++++++++++ .github/workflows/ci-master.yml | 6 +++++ 2 files changed, 53 insertions(+) create mode 100644 .github/workflows/ci-docker.yml diff --git a/.github/workflows/ci-docker.yml b/.github/workflows/ci-docker.yml new file mode 100644 index 00000000..8f14c13b --- /dev/null +++ b/.github/workflows/ci-docker.yml @@ -0,0 +1,47 @@ +name: Build & Publish Docker Images + +on: + workflow_call: + inputs: + dockerhub-username: + required: true + type: string + secrets: + CI_DOCKERHUB_TOKEN: + required: true + +# runs in ci-master after successful checks +# you can use images built by this action in future jobs. +# https://docs.docker.com/build/ci/github-actions/examples/#share-built-image-between-jobs +jobs: + docker: + # https://github.com/marketplace/actions/build-and-push-docker-images + runs-on: ubuntu-latest + steps: + # ensure working with latest code + - name: Checkout + uses: actions/checkout@v3 + # generate a git commit hash to be used as image tag + - name: Generate short hash + id: commit-hash + run: echo "short=$( git rev-parse --short $GITHUB_SHA )" >> $GITHUB_OUTPUT + # qemu is used to emulate different platform architectures + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + # cross-platform build of the image + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + # authenticate for publish to docker hub + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ inputs.dockerhub-username }} + password: ${{ secrets.CI_DOCKERHUB_TOKEN }} + # publish to docker hub, tag with short git hash + - name: Build and push + uses: docker/build-push-action@v3 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: kava/kava:${{ steps.commit-hash.outputs.short }},kava/kava:master diff --git a/.github/workflows/ci-master.yml b/.github/workflows/ci-master.yml index 8dd2e397..b59013c7 100644 --- a/.github/workflows/ci-master.yml +++ b/.github/workflows/ci-master.yml @@ -39,6 +39,12 @@ jobs: AWS_REGION: us-east-1 AWS_ACCESS_KEY_ID: ${{ secrets.CI_AWS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_AWS_KEY_SECRET }} + docker: + # only run if all checks pass + needs: [lint-checks, default-checks] + uses: ./.github/workflows/ci-docker.yml + with: + dockerhub-username: pirtleshell post-pipeline-metrics: uses: ./.github/workflows/metric-pipeline.yml if: always() # always run so we metric failures and successes