Skip to content

Commit a972019

Browse files
authored
Merge pull request #316 from thecodingmachine/feature/buildx-bake
Multiarch Implementation Build and test in separate task (with buildx bake) Add github-ci for multiarch build
2 parents 30cde58 + 676dabb commit a972019

33 files changed

+1574
-176
lines changed

.github/workflows/workflow.yml

Lines changed: 15 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -14,78 +14,35 @@ jobs:
1414
build_test_maybe_release:
1515
strategy:
1616
matrix:
17-
include:
18-
- variant: 'cli'
19-
php_version: '8.1'
20-
- variant: 'apache'
21-
php_version: '8.1'
22-
- variant: 'fpm'
23-
php_version: '8.1'
24-
- variant: 'cli'
25-
php_version: '8.0'
26-
- variant: 'apache'
27-
php_version: '8.0'
28-
- variant: 'fpm'
29-
php_version: '8.0'
30-
- variant: 'cli'
31-
php_version: '7.4'
32-
- variant: 'apache'
33-
php_version: '7.4'
34-
- variant: 'fpm'
35-
php_version: '7.4'
36-
- variant: 'cli'
37-
php_version: '7.3'
38-
- variant: 'apache'
39-
php_version: '7.3'
40-
- variant: 'fpm'
41-
php_version: '7.3'
42-
- variant: 'cli'
43-
php_version: '7.2'
44-
- variant: 'apache'
45-
php_version: '7.2'
46-
- variant: 'fpm'
47-
php_version: '7.2'
17+
variant: ['cli','apache','fpm']
18+
php_version: ['8.1','8.0','7.4', '7.3','7.2']
4819
runs-on: ubuntu-latest
4920
steps:
5021
- name: Set up QEMU
5122
uses: docker/setup-qemu-action@v1
5223
- name: Set up Docker Buildx
5324
uses: docker/setup-buildx-action@v1
54-
- uses: actions/checkout@v1
55-
- name: Build and test
25+
- name: Checkout
26+
uses: actions/checkout@v1
27+
- name: Build locally
5628
run: |
57-
PHP_VERSION="${{ matrix.php_version }}" BRANCH="v4" VARIANT="${{ matrix.variant }}" ./build-and-test.sh
58-
docker images | grep thecodingmachine/php
29+
PHP_VERSION="${{ matrix.php_version }}"
30+
docker buildx bake --load \
31+
--set "*.platform=$(uname -p)" \
32+
php${PHP_VERSION//.}-${{ matrix.variant }}
33+
docker images --filter=reference=thecodingmachine/php
5934
- name: Login to DockerHub
6035
# Merge ~ push.
6136
if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }}
6237
uses: docker/login-action@v1
6338
with:
6439
username: ${{ secrets.DOCKERHUB_USERNAME }}
6540
password: ${{ secrets.DOCKERHUB_TOKEN }}
66-
- name: Release
41+
- name: Build and push to repository
6742
# Merge ~ push.
6843
if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }}
6944
run: |
70-
BRANCH_VARIANT=`echo "${{ matrix.variant }}" | sed 's/\./-/g'`
71-
docker push thecodingmachine/php:${{ matrix.php_version }}-v4-slim-${BRANCH_VARIANT}
72-
docker push thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT}
73-
docker push thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT}-node10
74-
docker push thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT}-node12
75-
docker push thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT}-node14
76-
docker push thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT}-node16
77-
# Let's also tag PHP patch releases
78-
PHP_PATCH_VERSION=`docker run --rm thecodingmachine/php:${{ matrix.php_version }}-v4-slim-${BRANCH_VARIANT} php -v | head -n1 | grep -P '\d+\.\d+\.\d+' -o | head -n1`
79-
echo "Tagging patch release $PHP_PATCH_VERSION"
80-
docker tag thecodingmachine/php:${{ matrix.php_version }}-v4-slim-${BRANCH_VARIANT} thecodingmachine/php:${PHP_PATCH_VERSION}-v4-slim-${BRANCH_VARIANT}
81-
docker tag thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT} thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}
82-
docker tag thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT}-node10 thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}-node10
83-
docker tag thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT}-node12 thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}-node12
84-
docker tag thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT}-node14 thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}-node14
85-
docker tag thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT}-node16 thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}-node16
86-
docker push thecodingmachine/php:${PHP_PATCH_VERSION}-v4-slim-${BRANCH_VARIANT}
87-
docker push thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}
88-
docker push thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}-node10
89-
docker push thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}-node12
90-
docker push thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}-node14
91-
docker push thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}-node16
45+
PHP_VERSION="${{ matrix.php_version }}"
46+
PHP_PATCH_VERSION=`docker run --rm thecodingmachine/php:${PHP_VERSION}-v4-slim-${BRANCH_VARIANT} php -v | head -n1 | grep -P '\d+\.\d+\.\d+' -o | head -n1`
47+
TAG=${PHP_PATCH_VERSION} docker buildx bake --push \
48+
php${PHP_VERSION//.}-${{ matrix.variant }}

Dockerfile.apache

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,16 @@ ARG INSTALL_CRON=1
33
ARG INSTALL_COMPOSER=1
44
ARG PHP_VERSION
55
ARG GLOBAL_VERSION
6-
FROM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-slim-apache
6+
7+
FROM --platform=$BUILDPLATFORM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-slim-apache
8+
9+
ONBUILD ARG TARGETOS
10+
ONBUILD ARG TARGETARCH
11+
ONBUILD ARG BLACKFIRE_VERSION=1
12+
ENV CONTAINER_OS=${TARGETOS}
13+
ENV CONTAINER_ARCH=${TARGETARCH}
14+
ENV BLACKFIRE_VERSION=${BLACKFIRE_VERSION}
15+
716

817
LABEL authors="Julien Neuhart <[email protected]>, David Négrier <[email protected]>"
918

Dockerfile.apache.node10

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
# DO NOT EDIT THIS FILE : Make yours changes in /utils/Dockerfile.*.blueprint)
22
ARG PHP_VERSION
33
ARG GLOBAL_VERSION
4-
FROM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-apache
4+
ARG TARGETOS
5+
ARG TARGETARCH
6+
ARG BLACKFIRE_VERSION=1
7+
8+
FROM --platform=$BUILDPLATFORM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-apache
59

610
LABEL authors="Julien Neuhart <[email protected]>, David Négrier <[email protected]>"
711

812
USER root
913

14+
ENV BLACKFIRE_VERSION=${BLACKFIRE_VERSION}
15+
1016
RUN apt-get update && \
1117
apt-get install -y --no-install-recommends gnupg && \
1218
curl -sL https://deb.nodesource.com/setup_10.x | bash - && \

Dockerfile.apache.node12

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
# DO NOT EDIT THIS FILE : Make yours changes in /utils/Dockerfile.*.blueprint)
22
ARG PHP_VERSION
33
ARG GLOBAL_VERSION
4-
FROM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-apache
4+
ARG TARGETOS
5+
ARG TARGETARCH
6+
ARG BLACKFIRE_VERSION=1
7+
8+
FROM --platform=$BUILDPLATFORM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-apache
59

610
LABEL authors="Julien Neuhart <[email protected]>, David Négrier <[email protected]>"
711

812
USER root
913

14+
ENV BLACKFIRE_VERSION=${BLACKFIRE_VERSION}
15+
1016
RUN apt-get update && \
1117
apt-get install -y --no-install-recommends gnupg && \
1218
curl -sL https://deb.nodesource.com/setup_12.x | bash - && \

Dockerfile.apache.node14

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
# DO NOT EDIT THIS FILE : Make yours changes in /utils/Dockerfile.*.blueprint)
22
ARG PHP_VERSION
33
ARG GLOBAL_VERSION
4-
FROM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-apache
4+
ARG TARGETOS
5+
ARG TARGETARCH
6+
ARG BLACKFIRE_VERSION=1
7+
8+
FROM --platform=$BUILDPLATFORM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-apache
59

610
LABEL authors="Julien Neuhart <[email protected]>, David Négrier <[email protected]>"
711

812
USER root
913

14+
ENV BLACKFIRE_VERSION=${BLACKFIRE_VERSION}
15+
1016
RUN apt-get update && \
1117
apt-get install -y --no-install-recommends gnupg && \
1218
curl -sL https://deb.nodesource.com/setup_14.x | bash - && \

Dockerfile.apache.node16

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
# DO NOT EDIT THIS FILE : Make yours changes in /utils/Dockerfile.*.blueprint)
22
ARG PHP_VERSION
33
ARG GLOBAL_VERSION
4-
FROM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-apache
4+
ARG TARGETOS
5+
ARG TARGETARCH
6+
ARG BLACKFIRE_VERSION=1
7+
8+
FROM --platform=$BUILDPLATFORM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-apache
59

610
LABEL authors="Julien Neuhart <[email protected]>, David Négrier <[email protected]>"
711

812
USER root
913

14+
ENV BLACKFIRE_VERSION=${BLACKFIRE_VERSION}
15+
1016
RUN apt-get update && \
1117
apt-get install -y --no-install-recommends gnupg && \
1218
curl -sL https://deb.nodesource.com/setup_16.x | bash - && \

Dockerfile.cli

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,16 @@ ARG INSTALL_CRON=1
33
ARG INSTALL_COMPOSER=1
44
ARG PHP_VERSION
55
ARG GLOBAL_VERSION
6-
FROM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-slim-cli
6+
7+
FROM --platform=$BUILDPLATFORM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-slim-cli
8+
9+
ONBUILD ARG TARGETOS
10+
ONBUILD ARG TARGETARCH
11+
ONBUILD ARG BLACKFIRE_VERSION=1
12+
ENV CONTAINER_OS=${TARGETOS}
13+
ENV CONTAINER_ARCH=${TARGETARCH}
14+
ENV BLACKFIRE_VERSION=${BLACKFIRE_VERSION}
15+
716

817
LABEL authors="Julien Neuhart <[email protected]>, David Négrier <[email protected]>"
918

Dockerfile.cli.node10

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
# DO NOT EDIT THIS FILE : Make yours changes in /utils/Dockerfile.*.blueprint)
22
ARG PHP_VERSION
33
ARG GLOBAL_VERSION
4-
FROM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-cli
4+
ARG TARGETOS
5+
ARG TARGETARCH
6+
ARG BLACKFIRE_VERSION=1
7+
8+
FROM --platform=$BUILDPLATFORM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-cli
59

610
LABEL authors="Julien Neuhart <[email protected]>, David Négrier <[email protected]>"
711

812
USER root
913

14+
ENV BLACKFIRE_VERSION=${BLACKFIRE_VERSION}
15+
1016
RUN apt-get update && \
1117
apt-get install -y --no-install-recommends gnupg && \
1218
curl -sL https://deb.nodesource.com/setup_10.x | bash - && \

Dockerfile.cli.node12

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
# DO NOT EDIT THIS FILE : Make yours changes in /utils/Dockerfile.*.blueprint)
22
ARG PHP_VERSION
33
ARG GLOBAL_VERSION
4-
FROM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-cli
4+
ARG TARGETOS
5+
ARG TARGETARCH
6+
ARG BLACKFIRE_VERSION=1
7+
8+
FROM --platform=$BUILDPLATFORM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-cli
59

610
LABEL authors="Julien Neuhart <[email protected]>, David Négrier <[email protected]>"
711

812
USER root
913

14+
ENV BLACKFIRE_VERSION=${BLACKFIRE_VERSION}
15+
1016
RUN apt-get update && \
1117
apt-get install -y --no-install-recommends gnupg && \
1218
curl -sL https://deb.nodesource.com/setup_12.x | bash - && \

Dockerfile.cli.node14

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
# DO NOT EDIT THIS FILE : Make yours changes in /utils/Dockerfile.*.blueprint)
22
ARG PHP_VERSION
33
ARG GLOBAL_VERSION
4-
FROM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-cli
4+
ARG TARGETOS
5+
ARG TARGETARCH
6+
ARG BLACKFIRE_VERSION=1
7+
8+
FROM --platform=$BUILDPLATFORM thecodingmachine/php:${PHP_VERSION}-${GLOBAL_VERSION}-cli
59

610
LABEL authors="Julien Neuhart <[email protected]>, David Négrier <[email protected]>"
711

812
USER root
913

14+
ENV BLACKFIRE_VERSION=${BLACKFIRE_VERSION}
15+
1016
RUN apt-get update && \
1117
apt-get install -y --no-install-recommends gnupg && \
1218
curl -sL https://deb.nodesource.com/setup_14.x | bash - && \

0 commit comments

Comments
 (0)