From dfbaf2c8081bd97c6db22fa9dd6f2ddd4e057682 Mon Sep 17 00:00:00 2001 From: Romain Masclef Date: Fri, 15 Jan 2021 19:38:27 +0100 Subject: [PATCH] Add githubAction to build & push docker image on github release published event. (#881) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixes #880 👍 Update Dockerfile - fix alpine image version - add RELEASE_VERSION build arg Add githubAction to build & push docker image on github release published event - add github workflow file - add dependabot file to automatically propose PRs on githubActions version update* > ⚠️ *Note1: you will have to add `DOCKERHUB_USERNAME` and `DOCKERHUB_TOKEN` as github secrets in order for the > ⚠️ *Note2: github dependabot support must be enabled in order for this action to work githubAction to be able to login to the dockerHub and push images on it 👍 > *Note3: we can add other dependabot entries in order to update Go modules and Dockerfile base images 👍 (i.e `FROM` parts) --- .github/dependabot.yaml | 10 +++++++++ .github/workflows/ci-docker.yaml | 38 ++++++++++++++++++++++++++++++++ Dockerfile | 7 ++++-- 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 .github/dependabot.yaml create mode 100644 .github/workflows/ci-docker.yaml diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 00000000..61246924 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,10 @@ +version: 2 +updates: + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + pull-request-branch-name: + # Separate sections of the branch name with a hyphen + separator: "-" diff --git a/.github/workflows/ci-docker.yaml b/.github/workflows/ci-docker.yaml new file mode 100644 index 00000000..f6ca26bc --- /dev/null +++ b/.github/workflows/ci-docker.yaml @@ -0,0 +1,38 @@ +name: ci +on: + release: + types: [published] +jobs: + docker-build-and-push: + runs-on: ubuntu-latest + steps: + - + name: "Checkout repository" + uses: actions/checkout@v2 + - + name: "Set up Docker Buildx" + uses: docker/setup-buildx-action@v1 + - + name: "Cache Docker layers" + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + - + name: "Login to Container Registry" + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: "Build and push docker image" + uses: docker/build-push-action@v2 + with: + context: . + push: true + tags: ${{ github.repository }}:${{ github.event.release.tag_name }} + build-args: RELEASE_VERSION=${{ github.event.release.tag_name }} + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,mode=max,dest=/tmp/.buildx-cache diff --git a/Dockerfile b/Dockerfile index 1f9336d9..8317b9f1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,9 @@ -FROM alpine:latest as builder +FROM alpine:3.12 as builder + +ARG RELEASE_VERSION + RUN apk add --no-cache ca-certificates openssl -RUN wget https://github.com/buger/goreplay/releases/download/v1.2.0/gor_v1.2.0_x64.tar.gz -O gor.tar.gz +RUN wget https://github.com/buger/goreplay/releases/download/${RELEASE_VERSION}/gor_${RELEASE_VERSION}_x64.tar.gz -O gor.tar.gz RUN tar xzf gor.tar.gz FROM scratch