--- # ------------------------------------------------------------------------------------------------- # Job Name # ------------------------------------------------------------------------------------------------- name: build # ------------------------------------------------------------------------------------------------- # When to run # ------------------------------------------------------------------------------------------------- on: push: jobs: # ----------------------------------------------------------------------------------------------- # (1/8) Determine parameter settings # ----------------------------------------------------------------------------------------------- params: uses: ./.github/workflows/params.yml # ----------------------------------------------------------------------------------------------- # (2/8) Configure Build and Deploy Matrices # ----------------------------------------------------------------------------------------------- configure: needs: [params] uses: ./.github/workflows/zzz-reuse-configure.yml with: enabled: true can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} matrix: ${{ needs.params.outputs.matrix }} refs: ${{ needs.params.outputs.refs }} secrets: dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} # ----------------------------------------------------------------------------------------------- # (3/8) Build & Test base # ----------------------------------------------------------------------------------------------- base: needs: - params - configure uses: ./.github/workflows/zzz-reuse-build.yml with: enabled: true can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} build_matrix: ${{ needs.configure.outputs.matrix_build }} has_refs: ${{ needs.configure.outputs.has_refs }} artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} flavour: base secrets: dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} # ----------------------------------------------------------------------------------------------- # (4/8) Build & Test mods # ----------------------------------------------------------------------------------------------- mods: needs: - params - configure - base uses: ./.github/workflows/zzz-reuse-build.yml with: enabled: true can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} build_matrix: ${{ needs.configure.outputs.matrix_build }} has_refs: ${{ needs.configure.outputs.has_refs }} artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} flavour: mods secrets: dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} # ----------------------------------------------------------------------------------------------- # (5/8) Build & Test prod # ----------------------------------------------------------------------------------------------- prod: needs: - params - configure - base - mods uses: ./.github/workflows/zzz-reuse-build.yml with: enabled: true can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} build_matrix: ${{ needs.configure.outputs.matrix_build }} has_refs: ${{ needs.configure.outputs.has_refs }} artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} flavour: prod secrets: dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} # ----------------------------------------------------------------------------------------------- # (6/8) Build & Test work # ----------------------------------------------------------------------------------------------- work: needs: - params - configure - base - mods - prod uses: ./.github/workflows/zzz-reuse-build.yml with: enabled: true can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} build_matrix: ${{ needs.configure.outputs.matrix_build }} has_refs: ${{ needs.configure.outputs.has_refs }} artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} flavour: work secrets: dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} # ----------------------------------------------------------------------------------------------- # (7/8) Push images # ----------------------------------------------------------------------------------------------- push-image: needs: - params - configure - base - mods - prod - work uses: ./.github/workflows/zzz-reuse-deploy-images.yml with: enabled: true can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} build_matrix: ${{ needs.configure.outputs.matrix_build }} has_refs: ${{ needs.configure.outputs.has_refs }} artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} secrets: dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }} # ----------------------------------------------------------------------------------------------- # (8/8) Push Manifests # ----------------------------------------------------------------------------------------------- push-manifest: needs: - params - configure - base - mods - prod - work - push-image uses: ./.github/workflows/zzz-reuse-deploy-manifests.yml with: enabled: true can_deploy: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-') }} deploy_matrix: ${{ needs.configure.outputs.matrix_deploy }} params_matrix: ${{ needs.params.outputs.matrix }} has_refs: ${{ needs.configure.outputs.has_refs }} artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }} secrets: dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}