mirror of
https://github.com/devilbox/docker-php-fpm.git
synced 2025-12-10 11:01:14 +00:00
366 lines
14 KiB
YAML
366 lines
14 KiB
YAML
---
|
|
|
|
# -------------------------------------------------------------------------------------------------
|
|
# Job Name
|
|
# -------------------------------------------------------------------------------------------------
|
|
name: build
|
|
|
|
|
|
# -------------------------------------------------------------------------------------------------
|
|
# When to run
|
|
# -------------------------------------------------------------------------------------------------
|
|
on:
|
|
# Push or pull_request will be determined in jobs.configure.enabled
|
|
push:
|
|
pull_request:
|
|
# Dispatch: allows for manual trigger via GH UI
|
|
workflow_dispatch:
|
|
|
|
|
|
jobs:
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# (1/9) Determine parameter settings
|
|
# -----------------------------------------------------------------------------------------------
|
|
params:
|
|
uses: ./.github/workflows/params.yml
|
|
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# (2/9) Configure Build and Deploy Matrices
|
|
# -----------------------------------------------------------------------------------------------
|
|
configure:
|
|
needs: [params]
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-configure.yml@master
|
|
with:
|
|
enabled: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && (github.event.pull_request.user.login != 'cytopia')) }}
|
|
can_deploy: ${{ (github.repository == 'devilbox/docker-php-fpm') && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-')) }}
|
|
versions: ${{ needs.params.outputs.versions }}
|
|
refs: ${{ needs.params.outputs.refs }}
|
|
secrets:
|
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# (3/9) Build & Test base
|
|
# -----------------------------------------------------------------------------------------------
|
|
build-base:
|
|
needs:
|
|
- configure
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
|
|
with:
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
run_tests: false
|
|
upload_artifact: true
|
|
pull_base_image: true
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: base
|
|
stage_prev: ''
|
|
|
|
test-base:
|
|
needs:
|
|
- configure
|
|
- build-base
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
|
|
with:
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: base
|
|
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# (4/9) Build & Test mods
|
|
# -----------------------------------------------------------------------------------------------
|
|
build-mods:
|
|
needs:
|
|
- configure
|
|
- build-base
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
|
|
with:
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
run_tests: false
|
|
upload_artifact: true
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: mods
|
|
stage_prev: base
|
|
|
|
test-mods:
|
|
needs:
|
|
- configure
|
|
- build-mods
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
|
|
with:
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: mods
|
|
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# (5/9) Build & Test prod
|
|
# -----------------------------------------------------------------------------------------------
|
|
build-prod:
|
|
needs:
|
|
- configure
|
|
- build-mods
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
|
|
with:
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
run_tests: false
|
|
upload_artifact: true
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: prod
|
|
stage_prev: mods
|
|
|
|
test-prod:
|
|
needs:
|
|
- configure
|
|
- build-prod
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
|
|
with:
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: prod
|
|
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# (6/9) Build & Test slim
|
|
# -----------------------------------------------------------------------------------------------
|
|
build-slim:
|
|
needs:
|
|
- configure
|
|
- build-prod
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
|
|
with:
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
run_tests: false
|
|
upload_artifact: true
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: slim
|
|
stage_prev: prod
|
|
|
|
test-slim:
|
|
needs:
|
|
- configure
|
|
- build-slim
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
|
|
with:
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: slim
|
|
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# (7/9) Build & Test work
|
|
# -----------------------------------------------------------------------------------------------
|
|
build-work:
|
|
needs:
|
|
- configure
|
|
- build-slim
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
|
|
with:
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
run_tests: false
|
|
upload_artifact: true
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: work
|
|
stage_prev: slim
|
|
|
|
test-work:
|
|
needs:
|
|
- configure
|
|
- build-work
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
|
|
with:
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: work
|
|
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# (8/9) Push images
|
|
# -----------------------------------------------------------------------------------------------
|
|
push-base:
|
|
needs:
|
|
- configure
|
|
- test-base
|
|
- test-mods
|
|
- test-prod
|
|
- test-slim
|
|
- test-work
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
|
|
with:
|
|
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: base
|
|
secrets:
|
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
|
|
push-mods:
|
|
needs:
|
|
- configure
|
|
- test-base
|
|
- test-mods
|
|
- test-prod
|
|
- test-slim
|
|
- test-work
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
|
|
with:
|
|
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: mods
|
|
secrets:
|
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
|
|
push-prod:
|
|
needs:
|
|
- configure
|
|
- test-base
|
|
- test-mods
|
|
- test-prod
|
|
- test-slim
|
|
- test-work
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
|
|
with:
|
|
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: prod
|
|
secrets:
|
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
|
|
push-slim:
|
|
needs:
|
|
- configure
|
|
- test-base
|
|
- test-mods
|
|
- test-prod
|
|
- test-slim
|
|
- test-work
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
|
|
with:
|
|
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: slim
|
|
secrets:
|
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
|
|
push-work:
|
|
needs:
|
|
- configure
|
|
- test-base
|
|
- test-mods
|
|
- test-prod
|
|
- test-slim
|
|
- test-work
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
|
|
with:
|
|
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_build }}
|
|
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
|
|
stage: work
|
|
secrets:
|
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
|
|
|
|
# -----------------------------------------------------------------------------------------------
|
|
# (9/9) Push Manifests
|
|
# -----------------------------------------------------------------------------------------------
|
|
manifest-base:
|
|
needs:
|
|
- configure
|
|
- push-base
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
|
|
with:
|
|
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_deploy }}
|
|
versions: ${{ needs.configure.outputs.versions }}
|
|
stage: base
|
|
secrets:
|
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
|
|
manifest-mods:
|
|
needs:
|
|
- configure
|
|
- push-mods
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
|
|
with:
|
|
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_deploy }}
|
|
versions: ${{ needs.configure.outputs.versions }}
|
|
stage: mods
|
|
secrets:
|
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
|
|
manifest-prod:
|
|
needs:
|
|
- configure
|
|
- push-prod
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
|
|
with:
|
|
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_deploy }}
|
|
versions: ${{ needs.configure.outputs.versions }}
|
|
stage: prod
|
|
secrets:
|
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
|
|
manifest-slim:
|
|
needs:
|
|
- configure
|
|
- push-slim
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
|
|
with:
|
|
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_deploy }}
|
|
versions: ${{ needs.configure.outputs.versions }}
|
|
stage: slim
|
|
secrets:
|
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
|
|
manifest-work:
|
|
needs:
|
|
- configure
|
|
- push-work
|
|
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
|
|
with:
|
|
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
|
|
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
|
|
matrix: ${{ needs.configure.outputs.matrix_deploy }}
|
|
versions: ${{ needs.configure.outputs.versions }}
|
|
stage: work
|
|
secrets:
|
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
|