PR pipeline restructuring - one workflow to call multiple workflows ... #4
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: OpenFL PR Pipeline | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened, ready_for_review] | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.base_ref }}-${{ github.head_ref }}-${{ github.actor }} | |
cancel-in-progress: true | |
jobs: | |
bandit_code_scan: | |
# DO NOT remove the permissions block. Without this, these permissions are assumed as none in the called workflow and the workflow fails. | |
permissions: | |
contents: read # for actions/checkout to fetch code | |
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results | |
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status | |
uses: ./.github/workflows/bandit.yml | |
check_code_format: | |
uses: ./.github/workflows/lint.yml | |
docker_bench_security: | |
uses: ./.github/workflows/docker-bench-security.yml | |
double_workspace_export: | |
uses: ./.github/workflows/double_ws_export.yml | |
fr_301_watermark_nb_run: | |
uses: ./.github/workflows/federated_runtime.yml | |
gandlf_taskrunner: | |
uses: ./.github/workflows/gandlf.yml | |
hadolint_security_scan: | |
uses: ./.github/workflows/hadolint.yml | |
private_key_infrastructure: | |
uses: ./.github/workflows/pki.yml | |
pytest_coverage: | |
uses: ./.github/workflows/pytest_coverage.yml | |
straggler_handling: | |
uses: ./.github/workflows/straggler-handling.yml | |
task_runner: | |
uses: ./.github/workflows/taskrunner.yml | |
taskrunner_eden_compression: | |
uses: ./.github/workflows/taskrunner_eden_pipeline.yml | |
trivy_scan: | |
# DO NOT remove the permissions block. Without this, these permissions are assumed as none in the called workflow and the workflow fails. | |
permissions: | |
contents: read # for actions/checkout to fetch code | |
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results | |
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status | |
uses: ./.github/workflows/trivy.yml | |
tr_docker_gramine_direct: | |
uses: ./.github/workflows/tr_docker_gramine_direct.yml | |
tr_docker_native: | |
uses: ./.github/workflows/tr_docker_native.yml | |
wf_functional_e2e: | |
uses: ./.github/workflows/wf_functional_e2e.yml | |
workflow_interface_101_mnist: | |
uses: ./.github/workflows/workflow_interface_101_mnist.yml | |
workflow_interface_tests: | |
uses: ./.github/workflows/experimental_workflow_tests.yml | |
pipeline_status: | |
runs-on: ubuntu-22.04 | |
name: Pipeline Status | |
if: always() | |
needs: # Ensure to add any job added above to this list as well as the steps below | |
[ | |
bandit_code_scan, | |
check_code_format, | |
docker_bench_security, | |
double_workspace_export, | |
gandlf_taskrunner, | |
fr_301_watermark_nb_run, | |
hadolint_security_scan, | |
private_key_infrastructure, | |
pytest_coverage, | |
straggler_handling, | |
task_runner, | |
taskrunner_eden_compression, | |
trivy_scan, | |
tr_docker_gramine_direct, | |
tr_docker_native, | |
wf_functional_e2e, | |
workflow_interface_101_mnist, | |
workflow_interface_tests, | |
] | |
steps: | |
- name: Fail job if any of the above jobs have failed | |
if: | | |
(needs.bandit_code_scan.result != 'success' && needs.bandit_code_scan.result != 'skipped') || | |
(needs.check_code_format.result != 'success' && needs.check_code_format.result != 'skipped') || | |
(needs.docker_bench_security.result != 'success' && needs.docker_bench_security.result != 'skipped') || | |
(needs.double_workspace_export.result != 'success' && needs.double_workspace_export.result != 'skipped') || | |
(needs.fr_301_watermark_nb_run.result != 'success' && needs.fr_301_watermark_nb_run.result != 'skipped') || | |
(needs.gandlf_taskrunner.result != 'success' && needs.gandlf_taskrunner.result != 'skipped') || | |
(needs.hadolint_security_scan.result != 'success' && needs.hadolint_security_scan.result != 'skipped') || | |
(needs.private_key_infrastructure.result != 'success' && needs.private_key_infrastructure.result != 'skipped') || | |
(needs.pytest_coverage.result != 'success' && needs.pytest_coverage.result != 'skipped') || | |
(needs.straggler_handling.result != 'success' && needs.straggler_handling.result != 'skipped') || | |
(needs.task_runner.result != 'success' && needs.task_runner.result != 'skipped') || | |
(needs.taskrunner_eden_compression.result != 'success' && needs.taskrunner_eden_compression.result != 'skipped') || | |
(needs.trivy_scan.result != 'success' && needs.trivy_scan.result != 'skipped') || | |
(needs.tr_docker_gramine_direct.result != 'success' && needs.tr_docker_gramine_direct.result != 'skipped') || | |
(needs.tr_docker_native.result != 'success' && needs.tr_docker_native.result != 'skipped') || | |
(needs.wf_functional_e2e.result != 'success' && needs.wf_functional_e2e.result != 'skipped') || | |
(needs.workflow_interface_101_mnist.result != 'success' && needs.workflow_interface_101_mnist.result != 'skipped') || | |
(needs.workflow_interface_tests.result != 'success' && needs.workflow_interface_tests.result != 'skipped') | |
run: | | |
echo "One or more jobs failed. Exiting pipeline." | |
exit 1 | |
- name: Print pipeline status | |
run: | | |
echo "All jobs passed. Pipeline completed successfully." |