From c986c5553d9100a8e36058d6c5953e1f575e638f Mon Sep 17 00:00:00 2001 From: Hayden Fuss Date: Thu, 8 Oct 2020 20:16:24 -0400 Subject: [PATCH] Fixing Docker Build and Push for Runner Image (#115) A new image tag for the runner stopped being published on master merges from changes in #86. This fixes that in the following ways: - Tests the GH workflow on PRs w/o pushing the images - Runner and Docker version are moved from Makefile to GH Actions workflow and are passed in as build args - GHA workflow runs on PRs, and if the workflow file itself is changed (i.e. version bump) or the runner Docker source changes (excluding the Makefile since thats just for local dev) - Images are pushed on push (i.e. a merge) --- .github/workflows/build-runner.yml | 39 ++++++++++++++++++-------- .github/workflows/build.yml | 45 ------------------------------ 2 files changed, 28 insertions(+), 56 deletions(-) delete mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build-runner.yml b/.github/workflows/build-runner.yml index cfb989f7..869d92b0 100644 --- a/.github/workflows/build-runner.yml +++ b/.github/workflows/build-runner.yml @@ -1,14 +1,26 @@ on: + pull_request: + branches: + - '**' + paths: + - 'runner/**' + - .github/workflows/build-runner.yml push: branches: - master paths: - - 'runner/**' - + - runner/patched/* + - runner/Dockerfile + - runner/entrypoint.sh + - .github/workflows/build-runner.yml +name: Runner jobs: build: runs-on: ubuntu-latest - name: Build runner + name: Build + env: + RUNNER_VERSION: 2.273.5 + DOCKER_VERSION: 19.03.12 steps: - name: Checkout uses: actions/checkout@v2 @@ -19,16 +31,21 @@ jobs: with: buildx-version: latest - - name: Login to GitHub Docker Registry - run: echo "${DOCKERHUB_PASSWORD}" | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin - env: - DOCKERHUB_USERNAME: summerwind - DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_ACCESS_TOKEN }} - - name: Build Container Image working-directory: runner run: | docker buildx build \ + --build-arg RUNNER_VERSION=${RUNNER_VERSION} \ + --build-arg DOCKER_VERSION=${DOCKER_VERSION} \ --platform linux/amd64,linux/arm64 \ - --tag summerwind/actions-runner:latest \ - -f Dockerfile . --push + --tag summerwind/actions-runner:v${RUNNER_VERSION} \ + -f Dockerfile . + + - name: Push Container Image + working-directory: runner + run: | + docker login -u summerwind --password-stdin <<<${{ secrets.DOCKER_ACCESS_TOKEN }} + docker push summerwind/actions-runner:v${RUNNER_VERSION} + docker tag summerwind/actions-runner:v${RUNNER_VERSION} summerwind/actions-runner:latest + docker push summerwind/actions-runner:latest + if: ${{ github.event_name == 'push' }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index f4dc30fc..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Build - -on: - push: - branches: - - master - paths-ignore: - - 'runner/**' - - '.github/**' - -jobs: - build: - runs-on: ubuntu-latest - name: Build - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Install kubebuilder - run: | - curl -L -O https://github.com/kubernetes-sigs/kubebuilder/releases/download/v2.2.0/kubebuilder_2.2.0_linux_amd64.tar.gz - tar zxvf kubebuilder_2.2.0_linux_amd64.tar.gz - sudo mv kubebuilder_2.2.0_linux_amd64 /usr/local/kubebuilder - - - name: Run tests - run: make test - - - name: Set up Docker Buildx - id: buildx - uses: crazy-max/ghaction-docker-buildx@v1 - with: - buildx-version: latest - - - name: Login to GitHub Docker Registry - run: echo "${DOCKERHUB_PASSWORD}" | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin - env: - DOCKERHUB_USERNAME: summerwind - DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_ACCESS_TOKEN }} - - - name: Build Container Image - run: | - docker buildx build \ - --platform linux/amd64,linux/arm64 \ - --tag summerwind/actions-runner-controller:latest \ - -f Dockerfile . --push