Skip to content

Commit

Permalink
feat: use hosted runner
Browse files Browse the repository at this point in the history
  • Loading branch information
shyim committed Sep 25, 2024
1 parent 2786cf8 commit 570cc1a
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 92 deletions.
108 changes: 20 additions & 88 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ jobs:
echo "$MATRIX" >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
build-fpm-amd64:
name: PHP FPM ${{ matrix.php }} on amd64
fpm:
name: PHP FPM ${{ matrix.php }}
runs-on: ubuntu-latest
needs: [generate-matrix]
strategy: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
Expand All @@ -48,102 +48,35 @@ jobs:
- name: Login into Github Docker Registery
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- uses: docker/build-push-action@v6
with:
tags: ${{ matrix.fpm-image }}-amd64
tags: |
${{ matrix.fpm-tags }}
context: fpm
cache-from: type=gha,scope=fpm-${{ matrix.php }}-amd64
cache-to: type=gha,mode=max,scope=fpm-${{ matrix.php }}-amd64
cache-from: type=gha,scope=fpm-${{ matrix.php }}
cache-to: type=gha,mode=max,scope=fpm-${{ matrix.php }}
platforms: linux/amd64
build-args: |
PHP_PATCH_VERSION=${{ matrix.phpPatch }}
PHP_DIGEST=${{ matrix.phpPatchDigest }}
push: true
provenance: false

build-fpm-arm64:
name: PHP FPM ${{ matrix.php }} on arm64
runs-on: shopware-arm64
container: ghcr.io/catthehacker/ubuntu:act-22.04
env:
DOCKER_HOST: localhost:2375
services:
docker:
image: docker:23-dind
needs: [generate-matrix]
fpm-otel:
name: PHP FPM ${{ matrix.php }} with OpenTelemetry
runs-on: ubuntu-latest
needs: [generate-matrix, fpm]
strategy: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
steps:
- name: wait for docker to be available
run: while ! docker info 2>&1 >/dev/null; do sleep 1; done

- name: Checkout
uses: actions/checkout@v4

- name: Login into Github Docker Registery
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- uses: docker/build-push-action@v6
with:
tags: ${{ matrix.fpm-image }}-arm64
context: fpm
platforms: linux/arm64
cache-from: type=gha,scope=fpm-${{ matrix.php }}-arm64
cache-to: type=gha,mode=max,scope=fpm-${{ matrix.php }}-arm64
build-args: |
PHP_PATCH_VERSION=${{ matrix.phpPatch }}
PHP_DIGEST=${{ matrix.phpPatchDigest }}
push: true
provenance: false

fpm-merge:
name: Generate Docker Manifest for PHP ${{ matrix.php }}
runs-on: ubuntu-latest
needs: [generate-matrix, build-fpm-amd64, build-fpm-arm64]
strategy: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
steps:
- name: Login into Docker Hub
run: echo "${{ secrets.DOCKER_HUB_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin

- name: Login into Github Docker Registery
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

- name: Install Cosign
uses: sigstore/cosign-installer@v3

- name: Install Regclient
run: |
wget https://github.com/regclient/regclient/releases/latest/download/regctl-linux-amd64
chmod +x regctl-linux-amd64
- run: docker manifest create ${{ matrix.fpm-image }} --amend ${{ matrix.fpm-image }}-amd64 --amend ${{ matrix.fpm-image }}-arm64

- run: docker manifest push ${{ matrix.fpm-image }}

- run: cosign sign --yes ${{ matrix.fpm-image }}

- run: docker manifest create ${{ matrix.fpm-patch-image }} --amend ${{ matrix.fpm-image }}-amd64 --amend ${{ matrix.fpm-image }}-arm64

- run: docker manifest push ${{ matrix.fpm-patch-image }}

- run: cosign sign --yes ${{ matrix.fpm-patch-image }}

- if: github.ref == 'refs/heads/main'
run: ./regctl-linux-amd64 image copy ${{ matrix.fpm-image }} ${{ matrix.fpm-hub-image }}

- if: github.ref == 'refs/heads/main'
run: ./regctl-linux-amd64 image copy ${{ matrix.fpm-patch-image }} ${{ matrix.fpm-patch-hub-image }}

fpm-otel:
name: FPM with OpenTelemetry
runs-on: ubuntu-latest
needs: [fpm-merge]
steps:
- name: Login into Docker Hub
run: echo "${{ secrets.DOCKER_HUB_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin

Expand All @@ -159,14 +92,13 @@ jobs:
- name: Install Cosign
uses: sigstore/cosign-installer@v3

- name: Install Regclient
run: |
wget https://github.com/regclient/regclient/releases/latest/download/regctl-linux-amd64
chmod +x regctl-linux-amd64
- name: Install regctl
uses: regclient/actions/regctl-installer@main

- uses: docker/build-push-action@v6
with:
tags: ${{ matrix.fpm-image }}-otel
tags: |
${{ matrix.fpm-tags-otel }}
context: fpm-otel
platforms: linux/amd64,linux/arm64
build-args: |
Expand All @@ -175,9 +107,9 @@ jobs:
provenance: false

caddy:
name: Build Caddy ${{ matrix.php }}
name: Build Caddy with ${{ matrix.php }}
runs-on: ubuntu-latest
needs: [generate-matrix, fpm-merge]
needs: [generate-matrix, fpm]
strategy: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
steps:
- name: Checkout
Expand Down Expand Up @@ -220,7 +152,7 @@ jobs:
caddy-otel:
name: Build Caddy ${{ matrix.php }} with OpenTelemetry
runs-on: ubuntu-latest
needs: [fpm-otel]
needs: [fpm-otel, generate-matrix]
strategy: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
steps:
- name: Checkout
Expand Down
26 changes: 22 additions & 4 deletions matrix.php
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,16 @@ function get_digest_of_image(string $imageName, string $tag): string {
'ghcr.io/shopware/docker-base' . $imageSuffix . ':' . $imageTagPrefix . $patchVersion['version'] . '-caddy-otel',
];

$fpmImages = [
'ghcr.io/shopware/docker-base' . $imageSuffix . ':' . $imageTagPrefix . $supportedVersion . '-fpm',
'ghcr.io/shopware/docker-base' . $imageSuffix . ':' . $imageTagPrefix . $patchVersion['version'] . '-fpm'
];

$fpmImagesOtel = [
'ghcr.io/shopware/docker-base' . $imageSuffix . ':' . $imageTagPrefix . $supportedVersion . '-fpm-otel',
'ghcr.io/shopware/docker-base' . $imageSuffix . ':' . $imageTagPrefix . $patchVersion['version'] . '-fpm-otel'
];

if ($_SERVER['GITHUB_REF'] === 'refs/heads/main') {
$caddyImages = array_merge($caddyImages, [
'shopware/docker-base:' . $imageTagPrefix . $supportedVersion,
Expand All @@ -102,17 +112,25 @@ function get_digest_of_image(string $imageName, string $tag): string {
'shopware/docker-base:' . $imageTagPrefix . $supportedVersion . '-caddy-otel',
'shopware/docker-base:' . $imageTagPrefix . $patchVersion['version'] . '-caddy-otel',
]);

$fpmImages = array_merge($fpmImages, [
'shopware/docker-base:' . $imageTagPrefix . $supportedVersion . '-fpm',
'shopware/docker-base:' . $imageTagPrefix . $patchVersion['version'] . '-fpm'
]);

$fpmImagesOtel = array_merge($fpmImages, [
'shopware/docker-base:' . $imageTagPrefix . $supportedVersion . '-fpm-otel',
'shopware/docker-base:' . $imageTagPrefix . $patchVersion['version'] . '-fpm-otel'
]);
}

$data[] = [
'php' => $supportedVersion,
'phpPatch' => $patchVersion['version'],
'phpPatchDigest' => $phpDigest,
'base-image' => 'ghcr.io/shopware/docker-base' . $imageSuffix . ':' . $imageTagPrefix . $supportedVersion,
'fpm-image' => 'ghcr.io/shopware/docker-base' . $imageSuffix . ':' . $imageTagPrefix . $supportedVersion . '-fpm',
'fpm-patch-image' => 'ghcr.io/shopware/docker-base' . $imageSuffix . ':' . $imageTagPrefix . $patchVersion['version'] . '-fpm',
'fpm-hub-image' => 'shopware/docker-base:' . $imageTagPrefix . $supportedVersion . '-fpm',
'fpm-patch-hub-image' => 'shopware/docker-base:' . $imageTagPrefix . $patchVersion['version'] . '-fpm',
'fpm-tags' => implode("\n", $fpmImages),
'fpm-tags-otel' => implode("\n", $fpmImagesOtel),
'caddy-tags' => implode("\n", $caddyImages),
'caddy-tags-otel' => implode("\n", $caddyImagesOtel),
'scan-tag' => $caddyImages[0],
Expand Down

0 comments on commit 570cc1a

Please sign in to comment.