diff --git a/.github/actions/setup-docker-environment/action.yaml b/.github/actions/setup-docker-environment/action.yaml new file mode 100644 index 00000000..c55a7955 --- /dev/null +++ b/.github/actions/setup-docker-environment/action.yaml @@ -0,0 +1,38 @@ +name: "Setup Docker" + +inputs: + username: + description: "Username" + required: true + password: + description: "Password" + required: true + +outputs: + sha_short: + description: "The short SHA used for image builds" + value: ${{ steps.vars.outputs.sha_short }} + +runs: + using: "composite" + steps: + - name: Get Short SHA + id: vars + run: | + echo ::set-output name=sha_short::${GITHUB_SHA::7} + shell: bash + + - 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 + if: ${{ github.ref == 'master' && github.event.pull_request.merged == true }} + uses: docker/login-action@v1 + with: + username: ${{ inputs.username }} + password: ${{ inputs.password }} diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 7055b6f5..36707ca5 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -12,7 +12,10 @@ "regexManagers": [ { // use https://github.com/actions/runner/releases - "fileMatch": [".github/workflows/build-and-release-runners.yml"], + "fileMatch": [ + ".github/workflows/ubuntu-18-04-runners.yml", + ".github/workflows/ubuntu-20-04-runners.yml" + ], "matchStrings": ["RUNNER_VERSION: +(?.*?)\\n"], "depNameTemplate": "actions/runner", "datasourceTemplate": "github-releases" diff --git a/.github/workflows/build-and-release-runners.yml b/.github/workflows/build-and-release-runners.yml deleted file mode 100644 index d6f0eab6..00000000 --- a/.github/workflows/build-and-release-runners.yml +++ /dev/null @@ -1,123 +0,0 @@ -name: Build and Release Runners - -on: - pull_request: - branches: - - '**' - paths: - - 'runner/**' - - .github/workflows/build-and-release-runners.yml - - '!**.md' - 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 - - '!**.md' - -env: - RUNNER_VERSION: 2.284.0 - 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 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ec1940dc..12e42267 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -5,7 +5,8 @@ on: branches: - master paths-ignore: - - .github/workflows/build-and-release-runners.yml + - .github/workflows/ubuntu-18-04-runners.yml + - .github/workflows/ubuntu-20-04-runners.yml - .github/workflows/on-push-lint-charts.yml - .github/workflows/on-push-master-publish-chart.yml - .github/workflows/release.yml diff --git a/.github/workflows/ubuntu-18-04-runners.yml b/.github/workflows/ubuntu-18-04-runners.yml new file mode 100644 index 00000000..1c480de5 --- /dev/null +++ b/.github/workflows/ubuntu-18-04-runners.yml @@ -0,0 +1,61 @@ +name: Ubuntu 18.04 Runners + +on: + pull_request: + types: + - opened + - synchronize + - reopened + - closed + branches: + - 'master' + paths: + - 'runner/**' + - .github/workflows/ubuntu-18-04-runners.yml + - '!**.md' + - '!runner/Dockerfile' + - '!runner/Dockerfile.dindrunner' + +env: + RUNNER_VERSION: 2.284.0 + DOCKER_VERSION: 20.10.8 + DOCKERHUB_USERNAME: summerwind + +jobs: + build: + runs-on: ubuntu-latest + name: Build ${{ matrix.name }}-ubuntu-${{ matrix.os-version }} + strategy: + fail-fast: false + matrix: + include: + - name: actions-runner + os-version: 18.04 + dockerfile: Dockerfile.ubuntu.1804 + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup Docker Environment + id: vars + uses: ./.github/actions/setup-docker-environment + 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.ref == 'master' && github.event.pull_request.merged == true }} + 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 }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.github/workflows/ubuntu-20-04-runners.yml b/.github/workflows/ubuntu-20-04-runners.yml new file mode 100644 index 00000000..35094699 --- /dev/null +++ b/.github/workflows/ubuntu-20-04-runners.yml @@ -0,0 +1,64 @@ +name: Ubuntu 20.04 Runners + +on: + pull_request: + types: + - opened + - synchronize + - reopened + - closed + branches: + - 'master' + paths: + - 'runner/**' + - .github/workflows/ubuntu-20-04-runners.yml + - '!**.md' + - '!runner/Dockerfile.ubuntu.1804' + +env: + RUNNER_VERSION: 2.284.0 + DOCKER_VERSION: 20.10.8 + DOCKERHUB_USERNAME: summerwind + +jobs: + build: + runs-on: ubuntu-latest + name: Build ${{ matrix.name }}-ubuntu-${{ matrix.os-version }} + strategy: + fail-fast: false + matrix: + include: + - name: actions-runner + os-version: 20.04 + dockerfile: Dockerfile + - name: actions-runner-dind + os-version: 20.04 + dockerfile: Dockerfile.dindrunner + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup Docker Environment + id: vars + uses: ./.github/actions/setup-docker-environment + 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.ref == 'master' && github.event.pull_request.merged == true }} + 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 }} + ${{ env.DOCKERHUB_USERNAME }}/${{ matrix.name }}:latest + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/runner/Dockerfile.dindrunner b/runner/Dockerfile.dindrunner index 139d4675..5dbd5efc 100644 --- a/runner/Dockerfile.dindrunner +++ b/runner/Dockerfile.dindrunner @@ -3,7 +3,7 @@ FROM ubuntu:20.04 ARG TARGETPLATFORM ARG RUNNER_VERSION=2.280.3 ARG DOCKER_CHANNEL=stable -ARG DOCKER_VERSION=19.03.13 +ARG DOCKER_VERSION=20.10.8 ARG DUMB_INIT_VERSION=1.2.5 RUN test -n "$TARGETPLATFORM" || (echo "TARGETPLATFORM must be set" && false)