name: Build and Release Runners on: pull_request: branches: - '**' paths: - 'runner/**' - .github/workflows/build-and-release-runners.yml push: branches: - master paths: - runner/patched/* - runner/Dockerfile - runner/Dockerfile.ubuntu.1804 - runner/Dockerfile.dindrunner - runner/entrypoint.sh - .github/workflows/build-and-release-runners.yml env: RUNNER_VERSION: 2.283.1 DOCKER_VERSION: 20.10.8 DOCKERHUB_USERNAME: summerwind jobs: build: runs-on: ubuntu-latest name: Build ${{ matrix.name }}-ubuntu-${{ matrix.os-version }} strategy: matrix: include: - name: actions-runner os-version: 20.04 dockerfile: Dockerfile - name: actions-runner os-version: 18.04 dockerfile: Dockerfile.ubuntu.1804 - name: actions-runner-dind os-version: 20.04 dockerfile: Dockerfile.dindrunner steps: - name: Set outputs id: vars run: echo ::set-output name=sha_short::${GITHUB_SHA::7} - name: Checkout uses: actions/checkout@v2 - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 with: version: latest - name: Login to DockerHub uses: docker/login-action@v1 if: ${{ github.event_name == 'push' || github.event_name == 'release' }} with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_ACCESS_TOKEN }} - name: Build and Push Versioned Tags uses: docker/build-push-action@v2 with: context: ./runner file: ./runner/${{ matrix.dockerfile }} platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} build-args: | RUNNER_VERSION=${{ env.RUNNER_VERSION }} DOCKER_VERSION=${{ env.DOCKER_VERSION }} tags: | ${{ env.DOCKERHUB_USERNAME }}/${{ matrix.name }}:v${{ env.RUNNER_VERSION }}-ubuntu-${{ matrix.os-version }} ${{ env.DOCKERHUB_USERNAME }}/${{ matrix.name }}:v${{ env.RUNNER_VERSION }}-ubuntu-${{ matrix.os-version }}-${{ steps.vars.outputs.sha_short }} latest-tags: if: ${{ github.event_name == 'push' || github.event_name == 'release' }} runs-on: ubuntu-latest name: Build ${{ matrix.name }}-latest strategy: matrix: include: - name: actions-runner dockerfile: Dockerfile - name: actions-runner-dind dockerfile: Dockerfile.dindrunner steps: - name: Checkout uses: actions/checkout@v2 - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 with: version: latest - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_ACCESS_TOKEN }} - name: Build and Push Latest Tag uses: docker/build-push-action@v2 with: context: ./runner file: ./runner/${{ matrix.dockerfile }} platforms: linux/amd64,linux/arm64 push: true build-args: | RUNNER_VERSION=${{ env.RUNNER_VERSION }} DOCKER_VERSION=${{ env.DOCKER_VERSION }} tags: | ${{ env.DOCKERHUB_USERNAME }}/${{ matrix.name }}:latest