From 57bdacf0a6b1356d9642b3dc6d2285b5808978c0 Mon Sep 17 00:00:00 2001 From: Ed Morley <501702+edmorley@users.noreply.github.com> Date: Tue, 16 Jul 2024 09:43:33 +0100 Subject: [PATCH] Prevent issues with Docker Hub rate limits in CI (#124) Switches to the new GitHub Actions runner groups to: 1. Avoid the rate limit issues mentioned in: https://github.com/heroku/buildpacks-go/pull/283 2. To update to Ubuntu 24.04 Also pre-pulls the builder and run images to prevent duplicate pulls and impact on rate limits, as mentioned in: https://github.com/heroku/buildpacks-python/pull/223 See also: https://salesforce.quip.com/bu6UA0KImOxJ#temp:C:GZR57becb9df8d94f80b132168fd https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md GUS-W-16238120. --- .github/workflows/check_changelog.yml | 2 +- .github/workflows/ci.yml | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check_changelog.yml b/.github/workflows/check_changelog.yml index c0cc43b..e528aae 100644 --- a/.github/workflows/check_changelog.yml +++ b/.github/workflows/check_changelog.yml @@ -9,7 +9,7 @@ permissions: jobs: check-changelog: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: (!contains(github.event.pull_request.labels.*.name, 'skip changelog')) steps: - name: Checkout diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dfa4bb7..10ec233 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ env: jobs: lint: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -29,7 +29,7 @@ jobs: run: cargo fmt -- --check unit-test: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -51,7 +51,7 @@ jobs: arch: "arm64" - builder: "builder:20" arch: "arm64" - runs-on: ${{ matrix.arch == 'arm64' && 'pub-hk-ubuntu-22.04-arm-medium' || 'ubuntu-latest' }} + runs-on: ${{ matrix.arch == 'arm64' && 'pub-hk-ubuntu-24.04-arm-medium' || 'ubuntu-24.04' }} env: INTEGRATION_TEST_CNB_BUILDER: heroku/${{ matrix.builder }} steps: @@ -69,8 +69,18 @@ jobs: uses: Swatinem/rust-cache@v2.7.3 - name: Install Pack CLI uses: buildpacks/github-actions/setup-pack@v5.7.2 + # The images are pulled up front to prevent duplicate pulls due to the tests being run concurrently. - name: Pull builder image run: docker pull ${{ env.INTEGRATION_TEST_CNB_BUILDER }} + - name: Pull run image + # Using `docker inspect` rather than `pack builder inspect` since the latter makes + # additional requests to Docker Hub even when the image is available locally. + run: | + RUN_IMAGE=$( + docker inspect --format='{{index .Config.Labels "io.buildpacks.builder.metadata"}}' '${{ env.INTEGRATION_TEST_CNB_BUILDER }}' \ + | jq --exit-status --raw-output '.stack.runImage.image' + ) + docker pull "${RUN_IMAGE}" # The integration tests are annotated with the `ignore` attribute, allowing us to run # only those and not the unit tests, via the `--ignored` option. On the latest stack # we run all integration tests, but on older stacks we only run stack-specific tests.