From 5b9d3453316d47d3d332745311b366a1995c2b22 Mon Sep 17 00:00:00 2001 From: Lars Kanis Date: Thu, 30 Oct 2025 18:09:53 +0100 Subject: [PATCH 1/6] Use size-optimized docker build for on-push-CI as well The advantage is that the same cache entries are used as the publish and release workflows. The downside is that more CI jobs are used in cascade, slowing down the overall CI run. --- .github/workflows/ci.yml | 713 ++++++++++++++++++++++++++++++++++- .github/workflows/ci.yml.erb | 463 +++++++++++++++++++++++ Rakefile | 3 + 3 files changed, 1165 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/ci.yml.erb diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f2c2963..7ad0901 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,3 +1,5 @@ +# This file is generated. Please edit publish-images.yml.erb instead! + name: CI concurrency: group: "${{github.workflow}}-${{github.ref}}" @@ -17,6 +19,692 @@ on: - "*" jobs: + + aarch64-linux-musl: + name: "build aarch64-linux-musl, ${{ matrix.os }}" + needs: common-7f790bc6d2444edacd5337c9048dae13842eb9ff + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl + ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff + enableCrossOsArchive: true + - name: Build the image layers aarch64-linux-musl on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:aarch64-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + common-7f790bc6d2444edacd5337c9048dae13842eb9ff: + name: "build common-7f790bc6d2444edacd5337c9048dae13842eb9ff, ${{ matrix.os }}" + needs: common-8c26987a5e78ace67587139520ec4d44e00a8f54 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true + - name: Build the image layers common-7f790bc6d2444edacd5337c9048dae13842eb9ff on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:common-7f790bc6d2444edacd5337c9048dae13842eb9ff RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + arm-linux-musl: + name: "build arm-linux-musl, ${{ matrix.os }}" + needs: common-7f790bc6d2444edacd5337c9048dae13842eb9ff + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl + ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff + enableCrossOsArchive: true + - name: Build the image layers arm-linux-musl on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:arm-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + x86-linux-musl: + name: "build x86-linux-musl, ${{ matrix.os }}" + needs: common-7f790bc6d2444edacd5337c9048dae13842eb9ff + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl + ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff + enableCrossOsArchive: true + - name: Build the image layers x86-linux-musl on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:x86-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + x86_64-linux-musl: + name: "build x86_64-linux-musl, ${{ matrix.os }}" + needs: common-7f790bc6d2444edacd5337c9048dae13842eb9ff + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl + ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff + enableCrossOsArchive: true + - name: Build the image layers x86_64-linux-musl on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:x86_64-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + arm64-darwin: + name: "build arm64-darwin, ${{ matrix.os }}" + needs: common-d1f437046b79903f679102aadd5269e80f584d09 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin + ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 + enableCrossOsArchive: true + - name: Build the image layers arm64-darwin on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:arm64-darwin RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + common-d1f437046b79903f679102aadd5269e80f584d09: + name: "build common-d1f437046b79903f679102aadd5269e80f584d09, ${{ matrix.os }}" + needs: common-8c26987a5e78ace67587139520ec4d44e00a8f54 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true + - name: Build the image layers common-d1f437046b79903f679102aadd5269e80f584d09 on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:common-d1f437046b79903f679102aadd5269e80f584d09 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + x86_64-darwin: + name: "build x86_64-darwin, ${{ matrix.os }}" + needs: common-d1f437046b79903f679102aadd5269e80f584d09 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin + ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 + enableCrossOsArchive: true + - name: Build the image layers x86_64-darwin on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:x86_64-darwin RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + aarch64-linux-gnu: + name: "build aarch64-linux-gnu, ${{ matrix.os }}" + needs: common-8c26987a5e78ace67587139520ec4d44e00a8f54 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true + - name: Build the image layers aarch64-linux-gnu on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:aarch64-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + common-8c26987a5e78ace67587139520ec4d44e00a8f54: + name: "build common-8c26987a5e78ace67587139520ec4d44e00a8f54, ${{ matrix.os }}" + needs: common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 + enableCrossOsArchive: true + - name: Build the image layers common-8c26987a5e78ace67587139520ec4d44e00a8f54 on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:common-8c26987a5e78ace67587139520ec4d44e00a8f54 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + aarch64-mingw-ucrt: + name: "build aarch64-mingw-ucrt, ${{ matrix.os }}" + needs: common-8c26987a5e78ace67587139520ec4d44e00a8f54 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true + - name: Build the image layers aarch64-mingw-ucrt on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:aarch64-mingw-ucrt RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + arm-linux-gnu: + name: "build arm-linux-gnu, ${{ matrix.os }}" + needs: common-8c26987a5e78ace67587139520ec4d44e00a8f54 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true + - name: Build the image layers arm-linux-gnu on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:arm-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + x64-mingw-ucrt: + name: "build x64-mingw-ucrt, ${{ matrix.os }}" + needs: common-8c26987a5e78ace67587139520ec4d44e00a8f54 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true + - name: Build the image layers x64-mingw-ucrt on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:x64-mingw-ucrt RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + x64-mingw32: + name: "build x64-mingw32, ${{ matrix.os }}" + needs: common-8c26987a5e78ace67587139520ec4d44e00a8f54 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32 + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true + - name: Build the image layers x64-mingw32 on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:x64-mingw32 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + x86-linux-gnu: + name: "build x86-linux-gnu, ${{ matrix.os }}" + needs: common-8c26987a5e78ace67587139520ec4d44e00a8f54 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true + - name: Build the image layers x86-linux-gnu on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:x86-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + x86-mingw32: + name: "build x86-mingw32, ${{ matrix.os }}" + needs: common-8c26987a5e78ace67587139520ec4d44e00a8f54 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32 + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true + - name: Build the image layers x86-mingw32 on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:x86-mingw32 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + x86_64-linux-gnu: + name: "build x86_64-linux-gnu, ${{ matrix.os }}" + needs: common-8c26987a5e78ace67587139520ec4d44e00a8f54 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true + - name: Build the image layers x86_64-linux-gnu on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:x86_64-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0: + name: "build common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0, ${{ matrix.os }}" + + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 + ${{ runner.os }}-on-${{ runner.arch }}- + enableCrossOsArchive: true + - name: Build the image layers common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + jruby: + name: "build jruby, ${{ matrix.os }}" + needs: common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-jruby-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-jruby + ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 + enableCrossOsArchive: true + - name: Build the image layers jruby on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:jruby RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + + build_source_gem: name: build source runs-on: ubuntu-latest @@ -41,12 +729,10 @@ jobs: build_native_gem: name: build native + needs: [aarch64-linux-gnu,aarch64-linux-musl,aarch64-mingw-ucrt,arm-linux-gnu,arm-linux-musl,arm64-darwin,x64-mingw-ucrt,x64-mingw32,x86-linux-gnu,x86-linux-musl,x86-mingw32,x86_64-darwin,x86_64-linux-gnu,x86_64-linux-musl,jruby] strategy: fail-fast: false matrix: - os: - - ubuntu-latest - - ubuntu-24.04-arm platform: - aarch64-linux-gnu - aarch64-linux-musl @@ -63,6 +749,9 @@ jobs: - x86_64-darwin - x86_64-linux-gnu - x86_64-linux-musl + os: + # - ubuntu-latest + - ubuntu-24.04-arm include: - platform: aarch64-linux-gnu alias: aarch64-linux @@ -97,19 +786,15 @@ jobs: uses: actions/cache@v4 with: path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}-buildxz-${{ github.sha }} - restore-keys: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}-buildxz + key: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}-${{ github.sha }} + restore-keys: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }} enableCrossOsArchive: true - - name: Change docker to a cache-able driver + - name: Build the image from already filled cache run: | docker buildx create --driver docker-container --use - bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }}" - name: Show docker images run: docker images - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} - name: Test the generated image run: bundle exec rake test TEST_PLATFORM=${{ matrix.platform }} @@ -122,7 +807,7 @@ jobs: bundle exec rake gem:${{ matrix.platform }} - name: Upload native gem - if: runner.arch == 'X64' + if: runner.arch == 'ARM64' uses: actions/upload-artifact@v4 with: name: gem-${{ matrix.platform }} @@ -138,7 +823,7 @@ jobs: bundle exec rake clean clobber bundle exec rake gem:${{ matrix.platform }} - - if: matrix.static && runner.arch == 'X64' + - if: matrix.static && runner.arch == 'ARM64' name: Upload static native gem uses: actions/upload-artifact@v4 with: @@ -153,7 +838,7 @@ jobs: bundle exec rake clean clobber bundle exec rake gem:${{ matrix.alias }} - - if: matrix.alias && runner.arch == 'X64' + - if: matrix.alias && runner.arch == 'ARM64' name: Upload native gem ${{ matrix.alias }} uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/ci.yml.erb b/.github/workflows/ci.yml.erb new file mode 100644 index 0000000..be8d9a4 --- /dev/null +++ b/.github/workflows/ci.yml.erb @@ -0,0 +1,463 @@ +<%= "# This file is generated. Please edit publish-images.yml.erb instead!" %> + +name: CI +concurrency: + group: "${{github.workflow}}-${{github.ref}}" + cancel-in-progress: true +on: + workflow_dispatch: + schedule: + - cron: "0 5 * * 3" # At 05:00 on Wednesday # https://crontab.guru/#0_5_*_*_3 + push: + branches: + - main + tags: + - "*.*.*" + pull_request: + types: [opened, synchronize] + branches: + - "*" + +jobs: +<% parallel_docker_build.tree_deps.to_a.flatten.uniq.each do |tree_dep| + dockerfile = parallel_docker_build.final_deps.invert[tree_dep] + job = dockerfile ? dockerfile[/[-\w]+$/] : tree_dep +%> + <%= job %>: + name: "build <%= job %>, ${{ matrix.os }}" + <%= need = parallel_docker_build.tree_deps[tree_dep]; "needs: #{need}" if need %> + strategy: + fail-fast: false + matrix: + os: + # - ubuntu-latest + - ubuntu-24.04-arm + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-<%= job %>-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-<%= job %> + ${{ runner.os }}-on-${{ runner.arch }}-<%= need %> + enableCrossOsArchive: true + - name: Build the image layers <%= job %> on ${{ runner.arch }} + run: | + # Change docker to a cache-able driver + docker buildx create --driver docker-container --use + bundle exec rake build:<%= job %> RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} +<% end %> + + build_source_gem: + name: build source + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.3" + working-directory: test/rcd_test + bundler-cache: true + + - name: Build source gem + run: | + cd test/rcd_test/ + bundle exec rake gem + + - name: Upload source gem + uses: actions/upload-artifact@v4 + with: + name: gem-ruby + path: test/rcd_test/pkg/rcd_test-?.?.?.gem # e.g. rcd_test-1.0.0.gem + + build_native_gem: + name: build native + needs: [<%= parallel_docker_build.final_deps.keys.map{|a| a[/[-\w]+$/] }.join(",") %>] + strategy: + fail-fast: false + matrix: + platform: + - aarch64-linux-gnu + - aarch64-linux-musl + - aarch64-mingw-ucrt + - arm-linux-gnu + - arm-linux-musl + - arm64-darwin + - jruby + - x64-mingw-ucrt + - x64-mingw32 + - x86-linux-gnu + - x86-linux-musl + - x86-mingw32 + - x86_64-darwin + - x86_64-linux-gnu + - x86_64-linux-musl + os: + # - ubuntu-latest + - ubuntu-24.04-arm + include: + - platform: aarch64-linux-gnu + alias: aarch64-linux + - platform: aarch64-linux-musl + - platform: aarch64-mingw-ucrt + - platform: arm-linux-gnu + alias: arm-linux + - platform: arm-linux-musl + - platform: arm64-darwin + - platform: jruby + - platform: x64-mingw-ucrt + static: true + - platform: x64-mingw32 + static: true + - platform: x86-linux-gnu + alias: x86-linux + - platform: x86-linux-musl + - platform: x86-mingw32 + - platform: x86_64-darwin + - platform: x86_64-linux-gnu + alias: x86_64-linux + - platform: x86_64-linux-musl + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.3" + bundler-cache: true + + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}-${{ github.sha }} + restore-keys: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }} + enableCrossOsArchive: true + - name: Build the image from already filled cache + run: | + docker buildx create --driver docker-container --use + bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }}" + - name: Show docker images + run: docker images + + - name: Test the generated image + run: bundle exec rake test TEST_PLATFORM=${{ matrix.platform }} + + - name: Build native gem + run: | + cd test/rcd_test/ + bundle install + bundle exec rake clean clobber + bundle exec rake gem:${{ matrix.platform }} + + - name: Upload native gem + if: runner.arch == 'ARM64' + uses: actions/upload-artifact@v4 + with: + name: gem-${{ matrix.platform }} + path: test/rcd_test/pkg/*-*-*.gem + + - if: matrix.static + name: Build static native gem + env: + RCD_TEST_CONFIG: "--link-static" + run: | + cd test/rcd_test/ + bundle install + bundle exec rake clean clobber + bundle exec rake gem:${{ matrix.platform }} + + - if: matrix.static && runner.arch == 'ARM64' + name: Upload static native gem + uses: actions/upload-artifact@v4 + with: + name: gem-${{ matrix.platform }}-static + path: test/rcd_test/pkg/*-*-*.gem + + - if: matrix.alias + name: Build native gem ${{ matrix.alias }} + run: | + cd test/rcd_test/ + bundle install + bundle exec rake clean clobber + bundle exec rake gem:${{ matrix.alias }} + + - if: matrix.alias && runner.arch == 'ARM64' + name: Upload native gem ${{ matrix.alias }} + uses: actions/upload-artifact@v4 + with: + name: gem-${{ matrix.alias }} + path: test/rcd_test/pkg/*-*-*.gem + + test_source_gem: + name: source gem + needs: build_source_gem + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + ruby: ["3.4", "3.3", "3.2", "3.1", "3.0", "2.7"] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + - name: Download source gem + uses: actions/download-artifact@v4 + with: + name: gem-ruby + - name: Test source gem + run: | + gem install --local *.gem --verbose + cd test/rcd_test/ + bundle install + ruby -rrcd_test -S rake test + + test-x86_64-linux-setup-ruby: + name: "${{ matrix.platform }} setup-ruby(${{ matrix.ruby }})" + needs: build_native_gem + strategy: + fail-fast: false + matrix: + platform: [x86_64-linux, x86_64-linux-gnu] + ruby: ["3.4", "3.3", "3.2", "3.1", "3.0", "2.7"] + include: + # declare rubygems for each ruby version + - { ruby: "3.0", rubygems: "3.5.23" } + - { ruby: "2.7", rubygems: "3.4.22" } + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + - name: Download gem-${{ matrix.platform }} + uses: actions/download-artifact@v4 + with: + name: gem-${{ matrix.platform }} + - if: matrix.rubygems + run: gem update --system ${{ matrix.rubygems }} + - name: Test gem-${{ matrix.platform }} + run: | + gem install --local *.gem --verbose + cd test/rcd_test/ + bundle install + ruby -rrcd_test -S rake test + + test_architecture_matrix: + name: "${{ matrix.platform }} ${{ matrix.ruby }}" + needs: build_native_gem + strategy: + fail-fast: false + matrix: + platform: + - aarch64-linux + - aarch64-linux-gnu + - aarch64-linux-musl + - arm-linux + - arm-linux-gnu + - arm-linux-musl + - x86-linux + - x86-linux-gnu + - x86-linux-musl + - x86_64-linux + - x86_64-linux-gnu + - x86_64-linux-musl + ruby: ["3.4", "3.3", "3.2", "3.1", "3.0", "2.7"] + include: + # declare rubygems for each ruby version + - { ruby: "3.0", rubygems: "3.5.23" } + - { ruby: "2.7", rubygems: "3.4.22" } + # declare docker image for each platform + - { platform: aarch64-linux-musl, runon: "ubuntu-24.04-arm", docker_tag: "-alpine" } + - { platform: arm-linux-musl, runon: "ubuntu-24.04-arm", docker_tag: "-alpine" } + - { platform: x86-linux-musl, runon: "ubuntu-latest", docker_tag: "-alpine" } + - { platform: x86_64-linux-musl, runon: "ubuntu-latest", docker_tag: "-alpine" } + - { platform: x86_64-linux, runon: "ubuntu-latest" } + - { platform: x86_64-linux-gnu, runon: "ubuntu-latest" } + # declare docker platform for each platform + - { platform: aarch64-linux, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm64" } + - { platform: aarch64-linux-gnu, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm64" } + - { platform: aarch64-linux-musl, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm64" } + - { platform: arm-linux, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm/v7" } + - { platform: arm-linux-gnu, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm/v7" } + - { platform: arm-linux-musl, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm/v7" } + - { platform: x86-linux, runon: "ubuntu-latest", docker_platform: "--platform=linux/386" } + - { platform: x86-linux-gnu, runon: "ubuntu-latest", docker_platform: "--platform=linux/386" } + - { platform: x86-linux-musl, runon: "ubuntu-latest", docker_platform: "--platform=linux/386" } + runs-on: ${{ matrix.runon }} + steps: + - uses: actions/checkout@v4 + - name: Download gem-${{ matrix.platform }} + uses: actions/download-artifact@v4 + with: + name: gem-${{ matrix.platform }} + - name: Run tests + run: | + docker run --rm -v $PWD:/work -w /work \ + ${{ matrix.docker_platform}} ruby:${{ matrix.ruby }}${{ matrix.docker_tag }} \ + sh -c " + if test -n '${{ matrix.rubygems }}' ; then gem update --system ${{ matrix.rubygems }} ; fi && + gem install --local *.gem --verbose && + cd test/rcd_test/ && + bundle install && + ruby -rrcd_test -S rake test + " + + test_the_rest: + name: "${{ matrix.platform }} ${{ matrix.ruby }}" + needs: build_native_gem + strategy: + fail-fast: false + matrix: + os: [macos-13, macos-14] + ruby: ["3.4", "3.3", "3.2", "3.1", "3.0", "2.7"] + include: + - os: macos-13 + platform: x86_64-darwin + - os: macos-14 + platform: arm64-darwin + - os: ubuntu-latest + ruby: jruby + platform: jruby + - os: windows-latest + ruby: "2.7" + platform: x64-mingw32 + - os: windows-latest + ruby: "3.0" + platform: x64-mingw32 + - os: windows-latest + ruby: "3.1" + platform: x64-mingw-ucrt + - os: windows-latest + ruby: "3.2" + platform: x64-mingw-ucrt + - os: windows-latest + ruby: "3.3" + platform: x64-mingw-ucrt + - os: windows-latest + ruby: "3.4" + platform: x64-mingw-ucrt + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + - name: Print ruby version and gem env + run: | + ruby --version + gem env + - name: Download gem-${{ matrix.platform }} + uses: actions/download-artifact@v4 + with: + name: gem-${{ matrix.platform }} + - name: Test gem-${{ matrix.platform }} + run: | + gem install --local *.gem --verbose + cd test/rcd_test/ + bundle install + ruby -rrcd_test -S rake test + + test_windows_static: + name: "static ${{ matrix.platform }} ${{ matrix.ruby }}" + needs: build_native_gem + strategy: + fail-fast: false + matrix: + include: + - os: windows-latest + ruby: "2.7" + platform: x64-mingw32 + - os: windows-latest + ruby: "3.0" + platform: x64-mingw32 + - os: windows-latest + ruby: "3.1" + platform: x64-mingw-ucrt + - os: windows-latest + ruby: "3.2" + platform: x64-mingw-ucrt + - os: windows-latest + ruby: "3.3" + platform: x64-mingw-ucrt + - os: windows-latest + ruby: "3.4" + platform: x64-mingw-ucrt + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + - name: Print ruby version and gem env + run: | + ruby --version + gem env + - name: Download gem-${{ matrix.platform }}-static + uses: actions/download-artifact@v4 + with: + name: gem-${{ matrix.platform }}-static + - name: Test gem-${{ matrix.platform }}-static + run: | + gem install --local *.gem --verbose + cd test/rcd_test/ + bundle install + ruby -rrcd_test -S rake test + + test_ad_hoc: + name: "${{ matrix.platform }} on ${{ matrix.from_image }}" + needs: build_native_gem + strategy: + fail-fast: false + matrix: + include: + - runon: ubuntu-24.04-arm + from_image: navikey/raspbian-bullseye + image_platform: linux/arm/v7 + platform: arm-linux # bullseye ships ruby 2.7, rubygems won't recognize -gnu suffix + dockerfile: debian + - runon: ubuntu-24.04-arm + from_image: arm64v8/ubuntu + image_platform: linux/aarch64 + platform: aarch64-linux # arm64v8 ships ruby 3.0, rubygems won't recognize -gnu suffix + dockerfile: debian + - runon: ubuntu-latest + from_image: i386/alpine + image_platform: linux/386 + platform: x86-linux-musl + dockerfile: alpine + - runon: ubuntu-24.04-arm + from_image: arm32v6/alpine + image_platform: linux/arm/v6 + platform: arm-linux-musl + dockerfile: alpine + - runon: ubuntu-latest + from_image: alpine + image_platform: linux/amd64 + platform: x86_64-linux-musl + dockerfile: alpine + runs-on: ${{ matrix.runon }} + steps: + - uses: actions/checkout@v4 + - name: Download gem-${{ matrix.platform }} + uses: actions/download-artifact@v4 + with: + name: gem-${{ matrix.platform }} + - name: Build ${{ matrix.from_image }} image + run: | + docker build --rm --build-arg from_image=${{ matrix.from_image }} --platform=${{ matrix.image_platform }} -t ruby-test -f test/env/Dockerfile.${{ matrix.dockerfile }} . + - name: Run tests + run: docker run --rm -t --network=host -v `pwd`:/build ruby-test diff --git a/Rakefile b/Rakefile index dbedb71..a7f94dc 100644 --- a/Rakefile +++ b/Rakefile @@ -226,5 +226,8 @@ namespace :ci do sdf = ".github/workflows/release-images.yml" release = true File.write(sdf, erb.result(binding)) + erb = ERB.new(File.read(".github/workflows/ci.yml.erb")) + sdf = ".github/workflows/ci.yml" + File.write(sdf, erb.result(binding)) end end From c75035c1dde78a5ac3454f1c3ad374e6e9d67f5f Mon Sep 17 00:00:00 2001 From: Lars Kanis Date: Fri, 31 Oct 2025 19:55:55 +0100 Subject: [PATCH 2/6] Use gha backend of docker cache for to speedup build --- .github/workflows/ci.yml | 334 +++++++---------------------------- .github/workflows/ci.yml.erb | 28 +-- 2 files changed, 66 insertions(+), 296 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ad0901..ea309cf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,24 +37,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl - ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers aarch64-linux-musl on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:aarch64-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:aarch64-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl" common-7f790bc6d2444edacd5337c9048dae13842eb9ff: name: "build common-7f790bc6d2444edacd5337c9048dae13842eb9ff, ${{ matrix.os }}" @@ -73,24 +62,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff - ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers common-7f790bc6d2444edacd5337c9048dae13842eb9ff on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-7f790bc6d2444edacd5337c9048dae13842eb9ff RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:common-7f790bc6d2444edacd5337c9048dae13842eb9ff RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff" arm-linux-musl: name: "build arm-linux-musl, ${{ matrix.os }}" @@ -109,24 +87,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl - ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers arm-linux-musl on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:arm-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:arm-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl" x86-linux-musl: name: "build x86-linux-musl, ${{ matrix.os }}" @@ -145,24 +112,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl - ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x86-linux-musl on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x86-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:x86-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl" x86_64-linux-musl: name: "build x86_64-linux-musl, ${{ matrix.os }}" @@ -181,24 +137,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl - ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x86_64-linux-musl on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x86_64-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:x86_64-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl" arm64-darwin: name: "build arm64-darwin, ${{ matrix.os }}" @@ -217,24 +162,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin - ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers arm64-darwin on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:arm64-darwin RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:arm64-darwin RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin" common-d1f437046b79903f679102aadd5269e80f584d09: name: "build common-d1f437046b79903f679102aadd5269e80f584d09, ${{ matrix.os }}" @@ -253,24 +187,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 - ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers common-d1f437046b79903f679102aadd5269e80f584d09 on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-d1f437046b79903f679102aadd5269e80f584d09 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:common-d1f437046b79903f679102aadd5269e80f584d09 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09" x86_64-darwin: name: "build x86_64-darwin, ${{ matrix.os }}" @@ -289,24 +212,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin - ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x86_64-darwin on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x86_64-darwin RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:x86_64-darwin RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin" aarch64-linux-gnu: name: "build aarch64-linux-gnu, ${{ matrix.os }}" @@ -325,24 +237,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu - ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers aarch64-linux-gnu on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:aarch64-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:aarch64-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu" common-8c26987a5e78ace67587139520ec4d44e00a8f54: name: "build common-8c26987a5e78ace67587139520ec4d44e00a8f54, ${{ matrix.os }}" @@ -361,24 +262,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 - ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers common-8c26987a5e78ace67587139520ec4d44e00a8f54 on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-8c26987a5e78ace67587139520ec4d44e00a8f54 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:common-8c26987a5e78ace67587139520ec4d44e00a8f54 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54" aarch64-mingw-ucrt: name: "build aarch64-mingw-ucrt, ${{ matrix.os }}" @@ -397,24 +287,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt - ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers aarch64-mingw-ucrt on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:aarch64-mingw-ucrt RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:aarch64-mingw-ucrt RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt" arm-linux-gnu: name: "build arm-linux-gnu, ${{ matrix.os }}" @@ -433,24 +312,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu - ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers arm-linux-gnu on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:arm-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:arm-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu" x64-mingw-ucrt: name: "build x64-mingw-ucrt, ${{ matrix.os }}" @@ -469,24 +337,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt - ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x64-mingw-ucrt on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x64-mingw-ucrt RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:x64-mingw-ucrt RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt" x64-mingw32: name: "build x64-mingw32, ${{ matrix.os }}" @@ -505,24 +362,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32 - ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x64-mingw32 on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x64-mingw32 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:x64-mingw32 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32" x86-linux-gnu: name: "build x86-linux-gnu, ${{ matrix.os }}" @@ -541,24 +387,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu - ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x86-linux-gnu on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x86-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:x86-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu" x86-mingw32: name: "build x86-mingw32, ${{ matrix.os }}" @@ -577,24 +412,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32 - ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x86-mingw32 on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x86-mingw32 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:x86-mingw32 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32" x86_64-linux-gnu: name: "build x86_64-linux-gnu, ${{ matrix.os }}" @@ -613,24 +437,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu - ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x86_64-linux-gnu on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x86_64-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:x86_64-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu" common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0: name: "build common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0, ${{ matrix.os }}" @@ -649,24 +462,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 - ${{ runner.os }}-on-${{ runner.arch }}- - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}- --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0" jruby: name: "build jruby, ${{ matrix.os }}" @@ -685,24 +487,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-jruby-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-jruby - ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers jruby on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:jruby RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:jruby RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-jruby --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-jruby" build_source_gem: @@ -782,17 +573,12 @@ jobs: ruby-version: "3.3" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}-${{ github.sha }} - restore-keys: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }} - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image from already filled cache run: | docker buildx create --driver docker-container --use - bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }}" + bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}" - name: Show docker images run: docker images diff --git a/.github/workflows/ci.yml.erb b/.github/workflows/ci.yml.erb index be8d9a4..d09dee1 100644 --- a/.github/workflows/ci.yml.erb +++ b/.github/workflows/ci.yml.erb @@ -40,24 +40,13 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-<%= job %>-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-on-${{ runner.arch }}-<%= job %> - ${{ runner.os }}-on-${{ runner.arch }}-<%= need %> - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers <%= job %> on ${{ runner.arch }} run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:<%= job %> RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" - - name: Update and prune docker buildx layer cache - run: | - rm -rf tmp/build-cache-${{ runner.arch }} - mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} + bundle exec rake build:<%= job %> RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-<%= job %> --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-<%= need %> --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-<%= job %>" <% end %> build_source_gem: @@ -137,17 +126,12 @@ jobs: ruby-version: "3.3" bundler-cache: true - - name: Fetch docker buildx layer cache - uses: actions/cache@v4 - with: - path: tmp/build-cache-${{ runner.arch }} - key: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}-${{ github.sha }} - restore-keys: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }} - enableCrossOsArchive: true + - name: Expose GitHub Runtime for docker cache + uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image from already filled cache run: | docker buildx create --driver docker-container --use - bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }}" + bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}" - name: Show docker images run: docker images From 570e445cea02013814233f8156e12fa0878479dd Mon Sep 17 00:00:00 2001 From: Lars Kanis Date: Fri, 31 Oct 2025 21:43:12 +0100 Subject: [PATCH 3/6] Use multiple "-t" to avoid multiple docker build calls --- Rakefile | 8 +++----- build/parallel_docker_build.rb | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Rakefile b/Rakefile index a7f94dc..72e882b 100644 --- a/Rakefile +++ b/Rakefile @@ -14,11 +14,9 @@ def build_mri_images(platforms, host_platforms, output: ) sdf = "tmp/docker/Dockerfile.mri.#{platform}" image_name = RakeCompilerDock::Starter.container_image_name(platform: platform) - RakeCompilerDock.docker_build(sdf, tag: image_name, platform: plats, output: output) - - if image_name.include?("linux-gnu") - RakeCompilerDock.docker_build(sdf, tag: image_name.sub("linux-gnu", "linux"), platform: plats, output: output) - end + tags = [image_name] + tags << image_name.sub("linux-gnu", "linux") if image_name.include?("linux-gnu") + RakeCompilerDock.docker_build(sdf, tag: tags, platform: plats, output: output) end end diff --git a/build/parallel_docker_build.rb b/build/parallel_docker_build.rb index 2922f38..78bc2fd 100644 --- a/build/parallel_docker_build.rb +++ b/build/parallel_docker_build.rb @@ -25,7 +25,7 @@ def docker_build_cmd(platform=nil) def docker_build(filename, tag: nil, output: false, platform: ) cmd = docker_build_cmd(platform) return if cmd.nil? - tag_args = ["-t", tag] if tag + tag_args = Array(tag).flat_map{|t| ["-t", t] } if tag push_args = ["--push"] if output == 'push' push_args = ["--load"] if output == 'load' Class.new.extend(FileUtils).sh(*cmd, "-f", filename, ".", "--platform", platform, *tag_args, *push_args) From 7a122bfd106edee926995112a73266b8f104e9e6 Mon Sep 17 00:00:00 2001 From: Lars Kanis Date: Fri, 31 Oct 2025 22:06:06 +0100 Subject: [PATCH 4/6] Avoid unnecessary docker rebuilds in CI --- .github/workflows/ci.yml | 78 +++++++++++++++++++++++++--------- .github/workflows/ci.yml.erb | 6 ++- Rakefile | 9 +++- build/parallel_docker_build.rb | 12 ++++++ 4 files changed, 84 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ea309cf..e747f80 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,10 +40,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers aarch64-linux-musl on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:aarch64-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl" + bundle exec rake build:common-723ac6e8df696b68867754088d542e27005deaaf RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl" common-7f790bc6d2444edacd5337c9048dae13842eb9ff: name: "build common-7f790bc6d2444edacd5337c9048dae13842eb9ff, ${{ matrix.os }}" @@ -65,10 +67,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers common-7f790bc6d2444edacd5337c9048dae13842eb9ff on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-7f790bc6d2444edacd5337c9048dae13842eb9ff RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff" + bundle exec rake build:common-7f790bc6d2444edacd5337c9048dae13842eb9ff RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff" arm-linux-musl: name: "build arm-linux-musl, ${{ matrix.os }}" @@ -90,10 +94,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers arm-linux-musl on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:arm-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl" + bundle exec rake build:common-fbc527a24691e48b3ceae3946e031e5e7e88c321 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl" x86-linux-musl: name: "build x86-linux-musl, ${{ matrix.os }}" @@ -115,10 +121,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x86-linux-musl on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x86-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl" + bundle exec rake build:common-63da25377d0818f37111c2410d4816b73d1a9060 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl" x86_64-linux-musl: name: "build x86_64-linux-musl, ${{ matrix.os }}" @@ -140,10 +148,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x86_64-linux-musl on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x86_64-linux-musl RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl" + bundle exec rake build:common-dc7239babc93dee187ce0f0fa030de8c792e8611 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl" arm64-darwin: name: "build arm64-darwin, ${{ matrix.os }}" @@ -165,10 +175,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers arm64-darwin on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:arm64-darwin RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin" + bundle exec rake build:common-2829589da6681b1b5f379e6d68ff6be60cba5cf6 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin" common-d1f437046b79903f679102aadd5269e80f584d09: name: "build common-d1f437046b79903f679102aadd5269e80f584d09, ${{ matrix.os }}" @@ -190,10 +202,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers common-d1f437046b79903f679102aadd5269e80f584d09 on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-d1f437046b79903f679102aadd5269e80f584d09 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09" + bundle exec rake build:common-d1f437046b79903f679102aadd5269e80f584d09 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09" x86_64-darwin: name: "build x86_64-darwin, ${{ matrix.os }}" @@ -215,10 +229,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x86_64-darwin on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x86_64-darwin RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin" + bundle exec rake build:common-bc540754626a1ebf8164f8ae4378b9104b383663 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin" aarch64-linux-gnu: name: "build aarch64-linux-gnu, ${{ matrix.os }}" @@ -240,10 +256,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers aarch64-linux-gnu on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:aarch64-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu" + bundle exec rake build:common-b45d14aea28f4d30cfaa5bc6a34d751db67da79f RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu" common-8c26987a5e78ace67587139520ec4d44e00a8f54: name: "build common-8c26987a5e78ace67587139520ec4d44e00a8f54, ${{ matrix.os }}" @@ -265,10 +283,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers common-8c26987a5e78ace67587139520ec4d44e00a8f54 on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-8c26987a5e78ace67587139520ec4d44e00a8f54 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54" + bundle exec rake build:common-8c26987a5e78ace67587139520ec4d44e00a8f54 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54" aarch64-mingw-ucrt: name: "build aarch64-mingw-ucrt, ${{ matrix.os }}" @@ -290,10 +310,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers aarch64-mingw-ucrt on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:aarch64-mingw-ucrt RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt" + bundle exec rake build:common-2378386d2f098439bb4555bfc930aa62eab2dd65 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt" arm-linux-gnu: name: "build arm-linux-gnu, ${{ matrix.os }}" @@ -315,10 +337,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers arm-linux-gnu on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:arm-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu" + bundle exec rake build:common-8fd4771bba44643d3934e41c218db66645f9e96f RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu" x64-mingw-ucrt: name: "build x64-mingw-ucrt, ${{ matrix.os }}" @@ -340,10 +364,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x64-mingw-ucrt on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x64-mingw-ucrt RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt" + bundle exec rake build:common-fad6604335c2d8c64475e5d69c083d0cce4f63a7 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt" x64-mingw32: name: "build x64-mingw32, ${{ matrix.os }}" @@ -365,10 +391,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x64-mingw32 on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x64-mingw32 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32" + bundle exec rake build:common-c435c444a8baec018c75861cf5b32aeb9345683e RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32 --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32" x86-linux-gnu: name: "build x86-linux-gnu, ${{ matrix.os }}" @@ -390,10 +418,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x86-linux-gnu on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x86-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu" + bundle exec rake build:common-cda3746d187096bfcb5179842dc5b8f845ea3da6 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu" x86-mingw32: name: "build x86-mingw32, ${{ matrix.os }}" @@ -415,10 +445,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x86-mingw32 on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x86-mingw32 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32" + bundle exec rake build:common-697f3ca4a0ddea1b26a66aee35ab6fc30ae3010b RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32 --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32" x86_64-linux-gnu: name: "build x86_64-linux-gnu, ${{ matrix.os }}" @@ -440,10 +472,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers x86_64-linux-gnu on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:x86_64-linux-gnu RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu" + bundle exec rake build:common-7b065f9c97f9d9f355f67f09b97c844d21539e42 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu" common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0: name: "build common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0, ${{ matrix.os }}" @@ -465,10 +499,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}- --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0" + bundle exec rake build:common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}- --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0" jruby: name: "build jruby, ${{ matrix.os }}" @@ -490,10 +526,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers jruby on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:jruby RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-jruby --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-jruby" + bundle exec rake build:common-58bf949eac408202d0b3113ff93f6330354c92a1 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-jruby --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-jruby" build_source_gem: @@ -576,6 +614,8 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image from already filled cache + env: + RCD_TASK_DEPENDENCIES: "false" run: | docker buildx create --driver docker-container --use bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}" diff --git a/.github/workflows/ci.yml.erb b/.github/workflows/ci.yml.erb index d09dee1..6a4fa4a 100644 --- a/.github/workflows/ci.yml.erb +++ b/.github/workflows/ci.yml.erb @@ -43,10 +43,12 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image layers <%= job %> on ${{ runner.arch }} + env: + RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:<%= job %> RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-<%= job %> --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-<%= need %> --cache-to=type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-<%= job %>" + bundle exec rake build:<%= tree_dep %> RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-<%= need %> --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-<%= job %> --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-<%= job %>" <% end %> build_source_gem: @@ -129,6 +131,8 @@ jobs: - name: Expose GitHub Runtime for docker cache uses: crazy-max/ghaction-github-runtime@v3 - name: Build the image from already filled cache + env: + RCD_TASK_DEPENDENCIES: "false" run: | docker buildx create --driver docker-container --use bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}" diff --git a/Rakefile b/Rakefile index 72e882b..3b77f44 100644 --- a/Rakefile +++ b/Rakefile @@ -69,7 +69,14 @@ File.write(sdf, df) parallel_docker_build = RakeCompilerDock::ParallelDockerBuild.new(platforms.map{|pl, _| "tmp/docker/Dockerfile.mri.#{pl}" } + ["tmp/docker/Dockerfile.jruby"], workdir: "tmp/docker", task_prefix: "common-") namespace :build do - parallel_docker_build.define_rake_tasks platform: docker_platform + parallel_docker_build.define_file_tasks platform: docker_platform + + # The jobs in the CI pipeline are already organized in a tree structure. + # So we can avoid unnecessary rebuilds by omitting the dependecies. + unless ENV['RCD_TASK_DEPENDENCIES'] = "false" + parallel_docker_build.define_tree_tasks + parallel_docker_build.define_final_tasks + end platforms.each do |platform, target| sdf = "tmp/docker/Dockerfile.mri.#{platform}" diff --git a/build/parallel_docker_build.rb b/build/parallel_docker_build.rb index 78bc2fd..41698a2 100644 --- a/build/parallel_docker_build.rb +++ b/build/parallel_docker_build.rb @@ -132,16 +132,28 @@ def write_docker_files(vcs, workdir, task_prefix, plines=[]) # The rake tasks are named after the dockerfiles given to #new . # This also adds dependant intermediate tasks as prerequisites. def define_rake_tasks(**build_options) + define_file_tasks(**build_options) + define_tree_tasks + define_final_tasks + end + + def define_file_tasks(**build_options) file_deps.each do |fn, wfn| # p file_deps: {fn => wfn} task fn do RakeCompilerDock.docker_build(wfn, **build_options) end end + end + + def define_tree_tasks tree_deps.each do |file, prereq| # p tree_deps: {file => prereq} task file => prereq end + end + + def define_final_tasks final_deps.each do |file, prereq| # p final_deps: {file => prereq} task file => prereq From c9181e6ff5e48cad1a521a47cc3954a2c2a13e50 Mon Sep 17 00:00:00 2001 From: Lars Kanis Date: Wed, 5 Nov 2025 09:05:03 +0100 Subject: [PATCH 5/6] Revert gha cache type to local path type The gha type is faster, but for some reason the gha cache type is not reliable. It repeatedly has cache misses when there should be a cache hit. The local storage cache in combination with achtions/cache doesn't show this behaviour. --- .github/workflows/ci.yml | 336 ++++++++++++++++++++++++++++------- .github/workflows/ci.yml.erb | 30 +++- 2 files changed, 300 insertions(+), 66 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e747f80..f8fbd04 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,15 +37,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl + ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff + enableCrossOsArchive: true - name: Build the image layers aarch64-linux-musl on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-723ac6e8df696b68867754088d542e27005deaaf RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl" + bundle exec rake build:common-723ac6e8df696b68867754088d542e27005deaaf RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} common-7f790bc6d2444edacd5337c9048dae13842eb9ff: name: "build common-7f790bc6d2444edacd5337c9048dae13842eb9ff, ${{ matrix.os }}" @@ -64,15 +75,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true - name: Build the image layers common-7f790bc6d2444edacd5337c9048dae13842eb9ff on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-7f790bc6d2444edacd5337c9048dae13842eb9ff RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff" + bundle exec rake build:common-7f790bc6d2444edacd5337c9048dae13842eb9ff RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} arm-linux-musl: name: "build arm-linux-musl, ${{ matrix.os }}" @@ -91,15 +113,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl + ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff + enableCrossOsArchive: true - name: Build the image layers arm-linux-musl on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-fbc527a24691e48b3ceae3946e031e5e7e88c321 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl" + bundle exec rake build:common-fbc527a24691e48b3ceae3946e031e5e7e88c321 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} x86-linux-musl: name: "build x86-linux-musl, ${{ matrix.os }}" @@ -118,15 +151,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl + ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff + enableCrossOsArchive: true - name: Build the image layers x86-linux-musl on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-63da25377d0818f37111c2410d4816b73d1a9060 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl" + bundle exec rake build:common-63da25377d0818f37111c2410d4816b73d1a9060 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} x86_64-linux-musl: name: "build x86_64-linux-musl, ${{ matrix.os }}" @@ -145,15 +189,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl + ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff + enableCrossOsArchive: true - name: Build the image layers x86_64-linux-musl on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-dc7239babc93dee187ce0f0fa030de8c792e8611 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl" + bundle exec rake build:common-dc7239babc93dee187ce0f0fa030de8c792e8611 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} arm64-darwin: name: "build arm64-darwin, ${{ matrix.os }}" @@ -172,15 +227,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin + ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 + enableCrossOsArchive: true - name: Build the image layers arm64-darwin on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-2829589da6681b1b5f379e6d68ff6be60cba5cf6 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin" + bundle exec rake build:common-2829589da6681b1b5f379e6d68ff6be60cba5cf6 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} common-d1f437046b79903f679102aadd5269e80f584d09: name: "build common-d1f437046b79903f679102aadd5269e80f584d09, ${{ matrix.os }}" @@ -199,15 +265,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true - name: Build the image layers common-d1f437046b79903f679102aadd5269e80f584d09 on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-d1f437046b79903f679102aadd5269e80f584d09 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09" + bundle exec rake build:common-d1f437046b79903f679102aadd5269e80f584d09 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} x86_64-darwin: name: "build x86_64-darwin, ${{ matrix.os }}" @@ -226,15 +303,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin + ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 + enableCrossOsArchive: true - name: Build the image layers x86_64-darwin on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-bc540754626a1ebf8164f8ae4378b9104b383663 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin" + bundle exec rake build:common-bc540754626a1ebf8164f8ae4378b9104b383663 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} aarch64-linux-gnu: name: "build aarch64-linux-gnu, ${{ matrix.os }}" @@ -253,15 +341,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true - name: Build the image layers aarch64-linux-gnu on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-b45d14aea28f4d30cfaa5bc6a34d751db67da79f RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu" + bundle exec rake build:common-b45d14aea28f4d30cfaa5bc6a34d751db67da79f RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} common-8c26987a5e78ace67587139520ec4d44e00a8f54: name: "build common-8c26987a5e78ace67587139520ec4d44e00a8f54, ${{ matrix.os }}" @@ -280,15 +379,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 + enableCrossOsArchive: true - name: Build the image layers common-8c26987a5e78ace67587139520ec4d44e00a8f54 on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-8c26987a5e78ace67587139520ec4d44e00a8f54 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54" + bundle exec rake build:common-8c26987a5e78ace67587139520ec4d44e00a8f54 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} aarch64-mingw-ucrt: name: "build aarch64-mingw-ucrt, ${{ matrix.os }}" @@ -307,15 +417,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true - name: Build the image layers aarch64-mingw-ucrt on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-2378386d2f098439bb4555bfc930aa62eab2dd65 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt" + bundle exec rake build:common-2378386d2f098439bb4555bfc930aa62eab2dd65 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} arm-linux-gnu: name: "build arm-linux-gnu, ${{ matrix.os }}" @@ -334,15 +455,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true - name: Build the image layers arm-linux-gnu on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-8fd4771bba44643d3934e41c218db66645f9e96f RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu" + bundle exec rake build:common-8fd4771bba44643d3934e41c218db66645f9e96f RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} x64-mingw-ucrt: name: "build x64-mingw-ucrt, ${{ matrix.os }}" @@ -361,15 +493,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true - name: Build the image layers x64-mingw-ucrt on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-fad6604335c2d8c64475e5d69c083d0cce4f63a7 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt" + bundle exec rake build:common-fad6604335c2d8c64475e5d69c083d0cce4f63a7 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} x64-mingw32: name: "build x64-mingw32, ${{ matrix.os }}" @@ -388,15 +531,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32 + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true - name: Build the image layers x64-mingw32 on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-c435c444a8baec018c75861cf5b32aeb9345683e RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32 --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32" + bundle exec rake build:common-c435c444a8baec018c75861cf5b32aeb9345683e RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} x86-linux-gnu: name: "build x86-linux-gnu, ${{ matrix.os }}" @@ -415,15 +569,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true - name: Build the image layers x86-linux-gnu on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-cda3746d187096bfcb5179842dc5b8f845ea3da6 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu" + bundle exec rake build:common-cda3746d187096bfcb5179842dc5b8f845ea3da6 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} x86-mingw32: name: "build x86-mingw32, ${{ matrix.os }}" @@ -442,15 +607,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32 + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true - name: Build the image layers x86-mingw32 on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-697f3ca4a0ddea1b26a66aee35ab6fc30ae3010b RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32 --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32" + bundle exec rake build:common-697f3ca4a0ddea1b26a66aee35ab6fc30ae3010b RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} x86_64-linux-gnu: name: "build x86_64-linux-gnu, ${{ matrix.os }}" @@ -469,15 +645,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu + ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 + enableCrossOsArchive: true - name: Build the image layers x86_64-linux-gnu on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-7b065f9c97f9d9f355f67f09b97c844d21539e42 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu" + bundle exec rake build:common-7b065f9c97f9d9f355f67f09b97c844d21539e42 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0: name: "build common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0, ${{ matrix.os }}" @@ -496,15 +683,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 + ${{ runner.os }}-on-${{ runner.arch }}- + enableCrossOsArchive: true - name: Build the image layers common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}- --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0" + bundle exec rake build:common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} jruby: name: "build jruby, ${{ matrix.os }}" @@ -523,15 +721,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-jruby-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-jruby + ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 + enableCrossOsArchive: true - name: Build the image layers jruby on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:common-58bf949eac408202d0b3113ff93f6330354c92a1 RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-jruby --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-jruby" + bundle exec rake build:common-58bf949eac408202d0b3113ff93f6330354c92a1 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} build_source_gem: @@ -611,14 +820,21 @@ jobs: ruby-version: "3.3" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}-${{ github.sha }} + restore-keys: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }} + enableCrossOsArchive: true + - name: Build the image from already filled cache env: RCD_TASK_DEPENDENCIES: "false" run: | docker buildx create --driver docker-container --use - bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}" + bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }}" + - name: Show docker images run: docker images diff --git a/.github/workflows/ci.yml.erb b/.github/workflows/ci.yml.erb index 6a4fa4a..8d5d0f6 100644 --- a/.github/workflows/ci.yml.erb +++ b/.github/workflows/ci.yml.erb @@ -40,15 +40,26 @@ jobs: ruby-version: "3.4" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-<%= job %>-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-on-${{ runner.arch }}-<%= job %> + ${{ runner.os }}-on-${{ runner.arch }}-<%= need %> + enableCrossOsArchive: true - name: Build the image layers <%= job %> on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | # Change docker to a cache-able driver docker buildx create --driver docker-container --use - bundle exec rake build:<%= tree_dep %> RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-<%= need %> --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-<%= job %> --cache-to=type=gha,mode=max,scope=${{ runner.os }}-on-${{ runner.arch }}-<%= job %>" + bundle exec rake build:<%= tree_dep %> RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache + run: | + rm -rf tmp/build-cache-${{ runner.arch }} + mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }} <% end %> build_source_gem: @@ -128,14 +139,21 @@ jobs: ruby-version: "3.3" bundler-cache: true - - name: Expose GitHub Runtime for docker cache - uses: crazy-max/ghaction-github-runtime@v3 + - name: Fetch docker buildx layer cache + uses: actions/cache@v4 + with: + path: tmp/build-cache-${{ runner.arch }} + key: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}-${{ github.sha }} + restore-keys: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }} + enableCrossOsArchive: true + - name: Build the image from already filled cache env: RCD_TASK_DEPENDENCIES: "false" run: | docker buildx create --driver docker-container --use - bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from type=gha,scope=${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}" + bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }}" + - name: Show docker images run: docker images From 8f98201e897189b4aa7a45b2050b14e5dc836226 Mon Sep 17 00:00:00 2001 From: Lars Kanis Date: Wed, 5 Nov 2025 11:58:37 +0100 Subject: [PATCH 6/6] CI: Use standard buildx-action instead of manually switching --- .github/workflows/ci.yml | 137 +++++++++++++++++++++++++---------- .github/workflows/ci.yml.erb | 11 ++- 2 files changed, 106 insertions(+), 42 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f8fbd04..adff631 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,6 +37,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -46,13 +49,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff enableCrossOsArchive: true + - name: Build the image layers aarch64-linux-musl on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-723ac6e8df696b68867754088d542e27005deaaf RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -75,6 +78,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -84,13 +90,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 enableCrossOsArchive: true + - name: Build the image layers common-7f790bc6d2444edacd5337c9048dae13842eb9ff on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-7f790bc6d2444edacd5337c9048dae13842eb9ff RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -113,6 +119,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -122,13 +131,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff enableCrossOsArchive: true + - name: Build the image layers arm-linux-musl on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-fbc527a24691e48b3ceae3946e031e5e7e88c321 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -151,6 +160,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -160,13 +172,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff enableCrossOsArchive: true + - name: Build the image layers x86-linux-musl on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-63da25377d0818f37111c2410d4816b73d1a9060 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -189,6 +201,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -198,13 +213,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc6d2444edacd5337c9048dae13842eb9ff enableCrossOsArchive: true + - name: Build the image layers x86_64-linux-musl on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-dc7239babc93dee187ce0f0fa030de8c792e8611 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -227,6 +242,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -236,13 +254,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 enableCrossOsArchive: true + - name: Build the image layers arm64-darwin on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-2829589da6681b1b5f379e6d68ff6be60cba5cf6 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -265,6 +283,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -274,13 +295,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 enableCrossOsArchive: true + - name: Build the image layers common-d1f437046b79903f679102aadd5269e80f584d09 on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-d1f437046b79903f679102aadd5269e80f584d09 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -303,6 +324,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -312,13 +336,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin ${{ runner.os }}-on-${{ runner.arch }}-common-d1f437046b79903f679102aadd5269e80f584d09 enableCrossOsArchive: true + - name: Build the image layers x86_64-darwin on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-bc540754626a1ebf8164f8ae4378b9104b383663 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -341,6 +365,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -350,13 +377,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 enableCrossOsArchive: true + - name: Build the image layers aarch64-linux-gnu on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-b45d14aea28f4d30cfaa5bc6a34d751db67da79f RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -379,6 +406,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -388,13 +418,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 enableCrossOsArchive: true + - name: Build the image layers common-8c26987a5e78ace67587139520ec4d44e00a8f54 on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-8c26987a5e78ace67587139520ec4d44e00a8f54 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -417,6 +447,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -426,13 +459,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 enableCrossOsArchive: true + - name: Build the image layers aarch64-mingw-ucrt on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-2378386d2f098439bb4555bfc930aa62eab2dd65 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -455,6 +488,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -464,13 +500,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 enableCrossOsArchive: true + - name: Build the image layers arm-linux-gnu on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-8fd4771bba44643d3934e41c218db66645f9e96f RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -493,6 +529,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -502,13 +541,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 enableCrossOsArchive: true + - name: Build the image layers x64-mingw-ucrt on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-fad6604335c2d8c64475e5d69c083d0cce4f63a7 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -531,6 +570,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -540,13 +582,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32 ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 enableCrossOsArchive: true + - name: Build the image layers x64-mingw32 on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-c435c444a8baec018c75861cf5b32aeb9345683e RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -569,6 +611,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -578,13 +623,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 enableCrossOsArchive: true + - name: Build the image layers x86-linux-gnu on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-cda3746d187096bfcb5179842dc5b8f845ea3da6 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -607,6 +652,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -616,13 +664,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32 ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 enableCrossOsArchive: true + - name: Build the image layers x86-mingw32 on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-697f3ca4a0ddea1b26a66aee35ab6fc30ae3010b RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -645,6 +693,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -654,13 +705,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987a5e78ace67587139520ec4d44e00a8f54 enableCrossOsArchive: true + - name: Build the image layers x86_64-linux-gnu on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-7b065f9c97f9d9f355f67f09b97c844d21539e42 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -683,6 +734,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -692,13 +746,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 ${{ runner.os }}-on-${{ runner.arch }}- enableCrossOsArchive: true + - name: Build the image layers common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -721,6 +775,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -730,13 +787,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-jruby ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d86116e9a9ffad5888a4a8b7fbee50535dbe0 enableCrossOsArchive: true + - name: Build the image layers jruby on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:common-58bf949eac408202d0b3113ff93f6330354c92a1 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -820,6 +877,9 @@ jobs: ruby-version: "3.3" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -832,7 +892,6 @@ jobs: env: RCD_TASK_DEPENDENCIES: "false" run: | - docker buildx create --driver docker-container --use bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }}" - name: Show docker images diff --git a/.github/workflows/ci.yml.erb b/.github/workflows/ci.yml.erb index 8d5d0f6..b9e734c 100644 --- a/.github/workflows/ci.yml.erb +++ b/.github/workflows/ci.yml.erb @@ -40,6 +40,9 @@ jobs: ruby-version: "3.4" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -49,13 +52,13 @@ jobs: ${{ runner.os }}-on-${{ runner.arch }}-<%= job %> ${{ runner.os }}-on-${{ runner.arch }}-<%= need %> enableCrossOsArchive: true + - name: Build the image layers <%= job %> on ${{ runner.arch }} env: RCD_TASK_DEPENDENCIES: "false" run: | - # Change docker to a cache-able driver - docker buildx create --driver docker-container --use bundle exec rake build:<%= tree_dep %> RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new" + - name: Update and prune docker buildx layer cache run: | rm -rf tmp/build-cache-${{ runner.arch }} @@ -139,6 +142,9 @@ jobs: ruby-version: "3.3" bundler-cache: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Fetch docker buildx layer cache uses: actions/cache@v4 with: @@ -151,7 +157,6 @@ jobs: env: RCD_TASK_DEPENDENCIES: "false" run: | - docker buildx create --driver docker-container --use bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }}" - name: Show docker images