From 6245b1ad1101e8aaa25392bd92585c3b886e9f9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 12 Dec 2023 18:38:20 +0100 Subject: [PATCH 01/12] ci: add Docker tags containing the minor and major PHP version --- .github/workflows/docker.yaml | 6 ++++++ docker-bake.hcl | 36 +++++++++++++++++++++++++++-------- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 6f753eb4e..78bb695ed 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -32,7 +32,13 @@ jobs: name: Create variants matrix id: matrix run: | + # Fetch latest versions of PHP + PHP_82_LATEST=$(skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') + PHP_83_LATEST=$(skopeo inspect docker://docker.io/library/php:8.3 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') + + PHP_VERSION="$PHP_82_LATEST,$PHP_83_LATEST" >> "$GITHUB_OUTPUT" METADATA="$(docker buildx bake --print | jq -c)" + { echo metadata="$METADATA" echo variants="$(jq -c '.group.default.targets|map(sub("runner-|builder-"; ""))|unique' <<< "$METADATA")" diff --git a/docker-bake.hcl b/docker-bake.hcl index 934a255ae..4d0a4b977 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -6,6 +6,10 @@ variable "VERSION" { default = "dev" } +variable "PHP_VERSION" { + default = "8.2,8.3" +} + variable "GO_VERSION" { default = "1.21" } @@ -20,13 +24,17 @@ variable "CACHE" { default = "" } +variable DEFAULT_PHP_VERSION { + default = "8.3" +} + function "tag" { params = [version, os, php-version, tgt] result = [ version != "" ? format("%s:%s%s-php%s-%s", IMAGE_NAME, version, tgt == "builder" ? "-builder" : "", php-version, os) : "", - php-version == "8.3" && os == "bookworm" && version != "" ? format("%s:%s%s", IMAGE_NAME, version, tgt == "builder" ? "-builder" : "") : "", - php-version == "8.3" && version != "" ? format("%s:%s%s-%s", IMAGE_NAME, version, tgt == "builder" ? "-builder" : "", os) : "", - php-version == "8.3" && version == "latest" ? format("%s:%s%s", IMAGE_NAME, os, tgt == "builder" ? "-builder" : "") : "", + php-version == DEFAULT_PHP_VERSION && os == "bookworm" && version != "" ? format("%s:%s%s", IMAGE_NAME, version, tgt == "builder" ? "-builder" : "") : "", + php-version == DEFAULT_PHP_VERSION && version != "" ? format("%s:%s%s-%s", IMAGE_NAME, version, tgt == "builder" ? "-builder" : "", os) : "", + php-version == DEFAULT_PHP_VERSION && version == "latest" ? format("%s:%s%s", IMAGE_NAME, os, tgt == "builder" ? "-builder" : "") : "", os == "bookworm" && version != "" ? format("%s:%s%s-php%s", IMAGE_NAME, version, tgt == "builder" ? "-builder" : "", php-version) : "", ] } @@ -55,11 +63,21 @@ function "__semver" { result = v == {} ? [clean_tag(VERSION)] : v.prerelease == null ? ["latest", v.major, "${v.major}.${v.minor}", "${v.major}.${v.minor}.${v.patch}"] : ["${v.major}.${v.minor}.${v.patch}-${v.prerelease}"] } +function "php_version" { + params = [v] + result = _php_version(v, regexall("(?P\\d+)\\.(?P\\d+)", v)[0]) +} + +function "_php_version" { + params = [v, m] + result = "${m.major}.${m.minor}" == DEFAULT_PHP_VERSION ? [v, "${m.major}.${m.minor}", "${m.major}"] : [v, "${m.major}.${m.minor}"] +} + target "default" { name = "${tgt}-php-${replace(php-version, ".", "-")}-${os}" matrix = { os = ["bookworm", "alpine"] - php-version = ["8.2", "8.3"] + php-version = split(",", PHP_VERSION) tgt = ["builder", "runner"] } contexts = { @@ -76,10 +94,12 @@ target "default" { "linux/arm/v7", "linux/arm64", ] - tags = distinct(flatten([ - LATEST ? tag("latest", os, php-version, tgt) : [], - tag(SHA == "" ? "" : "sha-${substr(SHA, 0, 7)}", os, php-version, tgt), - [for v in semver(VERSION) : tag(v, os, php-version, tgt)] + tags = distinct(flatten( + [for pv in php_version(php-version) : flatten([ + LATEST ? tag("latest", os, pv, tgt) : [], + tag(SHA == "" ? "" : "sha-${substr(SHA, 0, 7)}", os, pv, tgt), + [for v in semver(VERSION) : tag(v, os, pv, tgt)] + ]) ])) labels = { "org.opencontainers.image.created" = "${timestamp()}" From 2c3e15e3f65f7633d6ad6a5731782d29e699806b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 12 Dec 2023 18:50:35 +0100 Subject: [PATCH 02/12] fix --- .github/workflows/docker.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 78bb695ed..d5ca141bf 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -36,8 +36,8 @@ jobs: PHP_82_LATEST=$(skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') PHP_83_LATEST=$(skopeo inspect docker://docker.io/library/php:8.3 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') - PHP_VERSION="$PHP_82_LATEST,$PHP_83_LATEST" >> "$GITHUB_OUTPUT" - METADATA="$(docker buildx bake --print | jq -c)" + + METADATA="$(PHP_VERSION=$PHP_VERSION docker buildx bake --print | jq -c)" { echo metadata="$METADATA" From 903675be0293d529a876d0d6bcc5b29e65834948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 12 Dec 2023 18:56:01 +0100 Subject: [PATCH 03/12] fix --- .github/workflows/docker.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index d5ca141bf..b2a4fe793 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -35,9 +35,9 @@ jobs: # Fetch latest versions of PHP PHP_82_LATEST=$(skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') PHP_83_LATEST=$(skopeo inspect docker://docker.io/library/php:8.3 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') + export PHP_VERSION="${PHP_83_LATEST},${PHP_82_LATEST}" - - METADATA="$(PHP_VERSION=$PHP_VERSION docker buildx bake --print | jq -c)" + METADATA="$(docker buildx bake --print | jq -c)" { echo metadata="$METADATA" From 681944a69ce366a40d4679920aeb9e1bedc75adc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 12 Dec 2023 18:57:35 +0100 Subject: [PATCH 04/12] fix --- .github/workflows/docker.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index b2a4fe793..b4fbddfd9 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -33,6 +33,8 @@ jobs: id: matrix run: | # Fetch latest versions of PHP + skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 + skopeo inspect docker://docker.io/library/php:8.3 --override-os linux --override-arch amd64 PHP_82_LATEST=$(skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') PHP_83_LATEST=$(skopeo inspect docker://docker.io/library/php:8.3 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') export PHP_VERSION="${PHP_83_LATEST},${PHP_82_LATEST}" From be859842f6b8ec0b1305f148586f213ed3d35171 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 12 Dec 2023 18:58:51 +0100 Subject: [PATCH 05/12] fix --- .github/workflows/docker.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index b4fbddfd9..bb0f33c8d 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -33,8 +33,7 @@ jobs: id: matrix run: | # Fetch latest versions of PHP - skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 - skopeo inspect docker://docker.io/library/php:8.3 --override-os linux --override-arch amd64 + skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env.[]' PHP_82_LATEST=$(skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') PHP_83_LATEST=$(skopeo inspect docker://docker.io/library/php:8.3 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') export PHP_VERSION="${PHP_83_LATEST},${PHP_82_LATEST}" From b5767784cf11003b3146a8a069431438fd61b397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 12 Dec 2023 20:06:57 +0100 Subject: [PATCH 06/12] fix --- .github/workflows/docker.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index bb0f33c8d..b8a9721ec 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -21,6 +21,9 @@ jobs: platforms: ${{ steps.matrix.outputs.platforms }} metadata: ${{ steps.matrix.outputs.metadata }} steps: + - + name: 'Setup jq' + uses: dcarbone/install-jq-action@v2 - uses: actions/checkout@v4 - From 53b494a5da4975ef4b71b943c23a7a26a4896e02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 12 Dec 2023 20:10:29 +0100 Subject: [PATCH 07/12] fix --- .github/workflows/docker.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index b8a9721ec..6fa5a6d49 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -23,7 +23,7 @@ jobs: steps: - name: 'Setup jq' - uses: dcarbone/install-jq-action@v2 + uses: dcarbone/install-jq-action@v2.1.0 - uses: actions/checkout@v4 - From 20f11885ebfa513277899c549407ae8a08f0558a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 12 Dec 2023 21:06:04 +0100 Subject: [PATCH 08/12] fix? --- .github/workflows/docker.yaml | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 6fa5a6d49..42ec34a2e 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -21,9 +21,6 @@ jobs: platforms: ${{ steps.matrix.outputs.platforms }} metadata: ${{ steps.matrix.outputs.metadata }} steps: - - - name: 'Setup jq' - uses: dcarbone/install-jq-action@v2.1.0 - uses: actions/checkout@v4 - @@ -36,18 +33,18 @@ jobs: id: matrix run: | # Fetch latest versions of PHP - skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env.[]' - PHP_82_LATEST=$(skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') - PHP_83_LATEST=$(skopeo inspect docker://docker.io/library/php:8.3 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') - export PHP_VERSION="${PHP_83_LATEST},${PHP_82_LATEST}" - - METADATA="$(docker buildx bake --print | jq -c)" - - { - echo metadata="$METADATA" - echo variants="$(jq -c '.group.default.targets|map(sub("runner-|builder-"; ""))|unique' <<< "$METADATA")" - echo platforms="$(jq -c 'first(.target[]) | .platforms' <<< "$METADATA")" - } >> "$GITHUB_OUTPUT" + skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")' + #PHP_82_LATEST=$(skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') + #PHP_83_LATEST=$(skopeo inspect docker://docker.io/library/php:8.3 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') + #export PHP_VERSION="${PHP_83_LATEST},${PHP_82_LATEST}" +# + #METADATA="$(docker buildx bake --print | jq -c)" +# + #{ + # echo metadata="$METADATA" + # echo variants="$(jq -c '.group.default.targets|map(sub("runner-|builder-"; ""))|unique' <<< "$METADATA")" + # echo platforms="$(jq -c 'first(.target[]) | .platforms' <<< "$METADATA")" + #} >> "$GITHUB_OUTPUT" env: SHA: ${{github.sha}} VERSION: ${{github.ref_type == 'tag' && github.ref_name || github.sha}} From 5b2b71e9f1e7092b8412bb0a6132959eb513d3b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 12 Dec 2023 21:14:09 +0100 Subject: [PATCH 09/12] fix? --- .github/workflows/docker.yaml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 42ec34a2e..e87ee4720 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -33,18 +33,18 @@ jobs: id: matrix run: | # Fetch latest versions of PHP - skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")' - #PHP_82_LATEST=$(skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') - #PHP_83_LATEST=$(skopeo inspect docker://docker.io/library/php:8.3 --override-os linux --override-arch amd64 | jq -r '.Env.[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') - #export PHP_VERSION="${PHP_83_LATEST},${PHP_82_LATEST}" -# - #METADATA="$(docker buildx bake --print | jq -c)" -# - #{ - # echo metadata="$METADATA" - # echo variants="$(jq -c '.group.default.targets|map(sub("runner-|builder-"; ""))|unique' <<< "$METADATA")" - # echo platforms="$(jq -c 'first(.target[]) | .platforms' <<< "$METADATA")" - #} >> "$GITHUB_OUTPUT" + skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")' + PHP_82_LATEST=$(skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') + PHP_83_LATEST=$(skopeo inspect docker://docker.io/library/php:8.3 --override-os linux --override-arch amd64 | jq -r '.Env[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') + export PHP_VERSION="${PHP_83_LATEST},${PHP_82_LATEST}" + + METADATA="$(docker buildx bake --print | jq -c)" + + { + echo metadata="$METADATA" + echo variants="$(jq -c '.group.default.targets|map(sub("runner-|builder-"; ""))|unique' <<< "$METADATA")" + echo platforms="$(jq -c 'first(.target[]) | .platforms' <<< "$METADATA")" + } >> "$GITHUB_OUTPUT" env: SHA: ${{github.sha}} VERSION: ${{github.ref_type == 'tag' && github.ref_name || github.sha}} From 36ab79e5dcd2cc107678032d4bc5d252614efde8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 13 Dec 2023 00:33:06 +0100 Subject: [PATCH 10/12] fix? --- .github/workflows/docker.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index e87ee4720..dbb5f6d3f 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -41,6 +41,7 @@ jobs: METADATA="$(docker buildx bake --print | jq -c)" { + echo php_version="$PHP_VERSION" echo metadata="$METADATA" echo variants="$(jq -c '.group.default.targets|map(sub("runner-|builder-"; ""))|unique' <<< "$METADATA")" echo platforms="$(jq -c 'first(.target[]) | .platforms' <<< "$METADATA")" @@ -108,6 +109,7 @@ jobs: env: SHA: ${{github.sha}} VERSION: ${{github.ref_type == 'tag' && github.ref_name || github.sha}} + PHP_VERSION: ${{needs.prepare.outputs.php_version}} - # Workaround for https://github.com/actions/runner/pull/2477#issuecomment-1501003600 name: Export metadata From 9e4c09d8f6a8c5b609e04aaa8c95cee53ed1a0a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 13 Dec 2023 00:41:49 +0100 Subject: [PATCH 11/12] fix? --- .github/workflows/docker.yaml | 72 +++++++++++++++++------------------ 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index dbb5f6d3f..06374a0c2 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -16,10 +16,11 @@ jobs: runs-on: ubuntu-latest outputs: # Push only if it's a tag or if we're committing in the main branch - push: ${{toJson(startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/main' && github.event_name != 'pull_request'))}} + push: ${{ toJson(startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/main' && github.event_name != 'pull_request')) }} variants: ${{ steps.matrix.outputs.variants }} platforms: ${{ steps.matrix.outputs.platforms }} metadata: ${{ steps.matrix.outputs.metadata }} + php_version: ${{ steps.matrix.outputs.php_version }} steps: - uses: actions/checkout@v4 @@ -33,7 +34,6 @@ jobs: id: matrix run: | # Fetch latest versions of PHP - skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")' PHP_82_LATEST=$(skopeo inspect docker://docker.io/library/php:8.2 --override-os linux --override-arch amd64 | jq -r '.Env[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') PHP_83_LATEST=$(skopeo inspect docker://docker.io/library/php:8.3 --override-os linux --override-arch amd64 | jq -r '.Env[] | select(test("^PHP_VERSION=")) | sub("^PHP_VERSION="; "")') export PHP_VERSION="${PHP_83_LATEST},${PHP_82_LATEST}" @@ -47,8 +47,8 @@ jobs: echo platforms="$(jq -c 'first(.target[]) | .platforms' <<< "$METADATA")" } >> "$GITHUB_OUTPUT" env: - SHA: ${{github.sha}} - VERSION: ${{github.ref_type == 'tag' && github.ref_name || github.sha}} + SHA: ${{ github.sha }} + VERSION: ${{ github.ref_type == 'tag' && github.ref_name || github.sha }} build: runs-on: ubuntu-latest needs: @@ -74,42 +74,42 @@ jobs: if: matrix.qemu uses: docker/setup-qemu-action@v3 with: - platforms: ${{matrix.platform}} + platforms: ${{ matrix.platform }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: - platforms: ${{matrix.platform}} + platforms: ${{ matrix.platform }} version: latest - name: Login to DockerHub if: fromJson(needs.prepare.outputs.push) uses: docker/login-action@v3 with: - username: ${{secrets.REGISTRY_USERNAME}} - password: ${{secrets.REGISTRY_PASSWORD}} + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_PASSWORD }} - name: Build id: build uses: docker/bake-action@v4 with: pull: true - load: ${{!fromJson(needs.prepare.outputs.push)}} + load: ${{ !fromJson(needs.prepare.outputs.push) }} targets: | - builder-${{matrix.variant}} - runner-${{matrix.variant}} + builder-${{ matrix.variant }} + runner-${{ matrix.variant }} # Remove tags to prevent "can't push tagged ref [...] by digest" error set: | *.tags= - *.platform=${{matrix.platform}} - *.cache-from=type=gha,scope=${{github.ref}}-${{matrix.platform}} - *.cache-from=type=gha,scope=refs/heads/main-${{matrix.platform}} - *.cache-to=type=gha,scope=${{github.ref}}-${{matrix.platform}} - ${{fromJson(needs.prepare.outputs.push) && '*.output=type=image,name=dunglas/frankenphp,push-by-digest=true,name-canonical=true,push=true' || ''}} + *.platform=${{ matrix.platform }} + *.cache-from=type=gha,scope=${{ github.ref }}-${{ matrix.platform }} + *.cache-from=type=gha,scope=refs/heads/main-${{ matrix.platform }} + *.cache-to=type=gha,scope=${{ github.ref }}-${{ matrix.platform }} + ${{ fromJson(needs.prepare.outputs.push) && '*.output=type=image,name=dunglas/frankenphp,push-by-digest=true,name-canonical=true,push=true' || '' }} env: - SHA: ${{github.sha}} - VERSION: ${{github.ref_type == 'tag' && github.ref_name || github.sha}} - PHP_VERSION: ${{needs.prepare.outputs.php_version}} + SHA: ${{ github.sha }} + VERSION: ${{ github.ref_type == 'tag' && github.ref_name || github.sha }} + PHP_VERSION: ${{ needs.prepare.outputs.php_version }} - # Workaround for https://github.com/actions/runner/pull/2477#issuecomment-1501003600 name: Export metadata @@ -118,20 +118,20 @@ jobs: mkdir -p /tmp/metadata/builder /tmp/metadata/runner # shellcheck disable=SC2086 - builderDigest=$(jq -r '."builder-${{matrix.variant}}"."containerimage.digest"' <<< $METADATA) + builderDigest=$(jq -r '."builder-${{ matrix.variant }}"."containerimage.digest"' <<< $METADATA) touch "/tmp/metadata/builder/${builderDigest#sha256:}" # shellcheck disable=SC2086 - runnerDigest=$(jq -r '."runner-${{matrix.variant}}"."containerimage.digest"' <<< $METADATA) + runnerDigest=$(jq -r '."runner-${{ matrix.variant }}"."containerimage.digest"' <<< $METADATA) touch "/tmp/metadata/runner/${runnerDigest#sha256:}" env: - METADATA: ${{steps.build.outputs.metadata}} + METADATA: ${{ steps.build.outputs.metadata }} - name: Upload runner metadata if: fromJson(needs.prepare.outputs.push) uses: actions/upload-artifact@v3 with: - name: metadata-builder-${{matrix.variant}} + name: metadata-builder-${{ matrix.variant }} path: /tmp/metadata/builder/* if-no-files-found: error retention-days: 1 @@ -140,20 +140,20 @@ jobs: if: fromJson(needs.prepare.outputs.push) uses: actions/upload-artifact@v3 with: - name: metadata-runner-${{matrix.variant}} + name: metadata-runner-${{ matrix.variant }} path: /tmp/metadata/runner/* if-no-files-found: error retention-days: 1 - name: Run tests if: '!matrix.qemu' - continue-on-error: ${{fromJson(needs.prepare.outputs.push)}} + continue-on-error: ${{ fromJson(needs.prepare.outputs.push) }} run: | - docker run --platform=${{matrix.platform}} --rm \ - "$(jq -r '."builder-${{matrix.variant}}"."containerimage.config.digest"' <<< "$METADATA")" \ - sh -c 'go test ${{matrix.race}} -v ./... && cd caddy && go test ${{matrix.race}} -v ./...' + docker run --platform=${{ matrix.platform }} --rm \ + "$(jq -r '."builder-${{ matrix.variant }}"."containerimage.config.digest"' <<< "$METADATA")" \ + sh -c 'go test ${{ matrix.race }} -v ./... && cd caddy && go test ${{ matrix.race }} -v ./...' env: - METADATA: ${{steps.build.outputs.metadata}} + METADATA: ${{ steps.build.outputs.metadata }} # Adapted from https://docs.docker.com/build/ci/github-actions/multi-platform/ push: runs-on: ubuntu-latest @@ -171,7 +171,7 @@ jobs: name: Download metadata uses: actions/download-artifact@v3 with: - name: metadata-${{matrix.target}}-${{matrix.variant}} + name: metadata-${{ matrix.target }}-${{ matrix.variant }} path: /tmp/metadata - name: Set up Docker Buildx @@ -182,21 +182,21 @@ jobs: name: Login to DockerHub uses: docker/login-action@v3 with: - username: ${{secrets.REGISTRY_USERNAME}} - password: ${{secrets.REGISTRY_PASSWORD}} + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_PASSWORD }} - name: Create manifest list and push working-directory: /tmp/metadata run: | # shellcheck disable=SC2046,SC2086 - docker buildx imagetools create $(jq -cr '.target."${{matrix.target}}-${{matrix.variant}}".tags | map("-t " + .) | join(" ")' <<< $METADATA) \ + docker buildx imagetools create $(jq -cr '.target."${{ matrix.target }}-${{ matrix.variant }}".tags | map("-t " + .) | join(" ")' <<< $METADATA) \ $(printf 'dunglas/frankenphp@sha256:%s ' *) env: - METADATA: ${{needs.prepare.outputs.metadata}} + METADATA: ${{ needs.prepare.outputs.metadata }} - name: Inspect image run: | # shellcheck disable=SC2046,SC2086 - docker buildx imagetools inspect $(jq -cr '.target."${{matrix.target}}-${{matrix.variant}}".tags | first' <<< $METADATA) + docker buildx imagetools inspect $(jq -cr '.target."${{ matrix.target }}-${{ matrix.variant }}".tags | first' <<< $METADATA) env: - METADATA: ${{needs.prepare.outputs.metadata}} + METADATA: ${{ needs.prepare.outputs.metadata }} From 588a5f2b3712d5d3dce30dabe621489481cd5846 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 13 Dec 2023 00:51:52 +0100 Subject: [PATCH 12/12] fix typo --- .github/workflows/docker.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 06374a0c2..6acc469f6 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -127,7 +127,7 @@ jobs: env: METADATA: ${{ steps.build.outputs.metadata }} - - name: Upload runner metadata + name: Upload builder metadata if: fromJson(needs.prepare.outputs.push) uses: actions/upload-artifact@v3 with: