11name : CI/CD
22
3- on : [push, pull_request, workflow_dispatch]
3+ on :
4+ push :
5+ workflow_dispatch :
6+ schedule :
7+ - cron : ' 0 0 * * 0'
48
59env :
610 DOCKER_BUILDKIT : 1
@@ -12,33 +16,53 @@ jobs:
1216 strategy :
1317 matrix :
1418 version : ['8.0', '8.1', '8.2']
19+ type : ['-swoole', '-nginx-swoole-prod']
1520
1621 steps :
1722 - name : Checkout code
18- uses : actions/checkout@v3.3.0
23+ uses : actions/checkout@v4.1.1
1924
20- - name : Build
21- run : |
22- docker build --pull -t kooldev/php:${{ matrix.version }}-nginx-swoole ${{ matrix.version }}-nginx-swoole
23- docker build --pull -t kooldev/php:${{ matrix.version }}-nginx-swoole-prod ${{ matrix.version }}-nginx-swoole-prod
25+ - name : Setup QEMU
26+ uses : docker/setup-qemu-action@v3
2427
25- - name : Tests
26- run : |
27- docker run kooldev/php:${{ matrix.version }}-nginx-swoole php -r "extension_loaded('swoole') or die(1);"
28- docker run kooldev/php:${{ matrix.version }}-nginx-swoole-prod php -r "extension_loaded('swoole') or die(1);"
28+ - name : Setup Docker Buildx
29+ uses : docker/setup-buildx-action@v3
2930
3031 - name : Login to DockerHub
31- uses : docker/login-action@v2.1.0
32+ uses : docker/login-action@v3
3233 if : github.ref == 'refs/heads/main' && github.repository == 'kool-dev/docker-php-swoole'
3334 with :
3435 username : ${{ secrets.DOCKER_USERNAME }}
3536 password : ${{ secrets.DOCKER_PASSWORD }}
3637
37- - name : Push to DockerHub
38- if : github.ref == 'refs/heads/main' && github.repository == 'kool-dev/docker-php-swoole'
38+ - name : Build and export to Docker
39+ uses : docker/build-push-action@v5
40+ with :
41+ context : ${{ matrix.version }}${{ matrix.type }}
42+ load : true
43+ tags : kooldev/php:${{ matrix.version }}${{ matrix.type }}
44+
45+ - name : Tests (dev)
46+ if : matrix.type == '-swoole'
3947 run : |
40- docker push kooldev/php:${{ matrix.version }}-nginx-swoole
41- docker push kooldev/php:${{ matrix.version }}-nginx-swoole-prod
48+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -r "extension_loaded('swoole') or die(1);"
49+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} node -v
50+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} yarn -v
51+
52+ - name : Tests (prod)
53+ if : matrix.type == '-nginx-swoole-prod'
54+ run : |
55+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} php -r "extension_loaded('swoole') or die(1);"
56+ docker run kooldev/php:${{ matrix.version }}${{ matrix.type }} nginx -v
57+
58+ - name : Build and push
59+ uses : docker/build-push-action@v5
60+ if : github.ref == 'refs/heads/main' && github.repository == 'kool-dev/docker-php-swoole'
61+ with :
62+ context : ${{ matrix.version }}${{ matrix.type }}
63+ platforms : linux/amd64,linux/arm64
64+ push : true
65+ tags : kooldev/php:${{ matrix.version }}${{ matrix.type }}
4266
4367 trigger-build-oci8 :
4468 name : Trigger OCI8 Build
0 commit comments