From 188cce892a14a496a71a219096dc2e85c1e4b541 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Thu, 28 Nov 2024 13:10:19 +0100 Subject: [PATCH 1/3] Fix parent caching The for loop wasn't splitting. Use proper bash arrays. --- .github/workflows/build-ruby.yml | 64 ++++++++++++++++---------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/.github/workflows/build-ruby.yml b/.github/workflows/build-ruby.yml index bf1bd85..b6a78f7 100644 --- a/.github/workflows/build-ruby.yml +++ b/.github/workflows/build-ruby.yml @@ -240,8 +240,8 @@ jobs: if: ${{ contains(matrix.arch, 'x86_64') }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -250,8 +250,8 @@ jobs: if: ${{ contains(matrix.arch, 'x86_64') }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -271,8 +271,8 @@ jobs: if: ${{ contains(matrix.arch, 'x86_64') }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -281,8 +281,8 @@ jobs: if: ${{ contains(matrix.arch, 'x86_64') && matrix.libc == 'musl' }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc) @@ -302,8 +302,8 @@ jobs: if: ${{ contains(matrix.arch, 'aarch64') }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -312,8 +312,8 @@ jobs: if: ${{ contains(matrix.arch, 'aarch64') }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -333,8 +333,8 @@ jobs: if: ${{ contains(matrix.arch, 'aarch64') }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -343,8 +343,8 @@ jobs: if: ${{ contains(matrix.arch, 'aarch64') && matrix.libc == 'musl' }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc) @@ -360,8 +360,8 @@ jobs: - name: Push CI run image (${{ join(matrix.arch, ', ') }}) run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -369,8 +369,8 @@ jobs: - name: Push commit image (${{ join(matrix.arch, ', ') }}) run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -379,8 +379,8 @@ jobs: if: ${{ inputs.push }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -391,8 +391,8 @@ jobs: if: ${{ inputs.push && matrix.libc == 'gnu' }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -403,8 +403,8 @@ jobs: if: ${{ matrix.libc == 'gnu' || matrix.libc == 'centos' }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc) @@ -413,8 +413,8 @@ jobs: if: ${{ inputs.push && (matrix.libc == 'gnu' || matrix.libc == 'centos') }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc) @@ -429,8 +429,8 @@ jobs: if: ${{ matrix.libc == 'musl' }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc-g${sha}) cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done @@ -441,8 +441,8 @@ jobs: if: ${{ inputs.push && matrix.libc == 'musl' }} run: | cache_from=() - parents="$(git rev-list --parents -n 1 ${{ github.sha }})" - for sha in $parents; do + parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) + for sha in "${parents[@]}"; do cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc-g${sha}) cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done From 27c8fb38dc49f108f844710d173cfd2d1f3a31e1 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Thu, 28 Nov 2024 13:13:23 +0100 Subject: [PATCH 2/3] Add debug information --- .github/workflows/build-ruby.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/build-ruby.yml b/.github/workflows/build-ruby.yml index b6a78f7..c6a7bb2 100644 --- a/.github/workflows/build-ruby.yml +++ b/.github/workflows/build-ruby.yml @@ -242,6 +242,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -252,6 +253,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -273,6 +275,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -283,6 +286,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc) @@ -304,6 +308,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -314,6 +319,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -335,6 +341,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -345,6 +352,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc) @@ -362,6 +370,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -371,6 +380,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -381,6 +391,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -393,6 +404,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}) @@ -405,6 +417,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc) @@ -415,6 +428,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc-g${sha}) done cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc) @@ -431,6 +445,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc-g${sha}) cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done @@ -443,6 +458,7 @@ jobs: cache_from=() parents=( $(git rev-list --parents -n 1 ${{ github.sha }}) ) for sha in "${parents[@]}"; do + echo "${sha}" cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-gcc-g${sha}) cache_from+=(--cache-from=type=registry,ref=${{ steps.vars.outputs.IMAGE }}:${{ steps.vars.outputs.RELEASE_TAG }}-g${sha}) done From 9296fc7edd7c606cdd9f2b6bf81bf3c3ae2375bf Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Thu, 28 Nov 2024 13:43:52 +0100 Subject: [PATCH 3/3] Increase depth of fetching to immediate parents --- .github/workflows/build-ruby.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-ruby.yml b/.github/workflows/build-ruby.yml index c6a7bb2..a5e85e8 100644 --- a/.github/workflows/build-ruby.yml +++ b/.github/workflows/build-ruby.yml @@ -231,6 +231,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: persist-credentials: false + fetch-depth: 2 # First, build image for x86_64 as it will fail fast #