Skip to content

Commit

Permalink
PR pipeline restructuring - one workflow to call multiple workflows .…
Browse files Browse the repository at this point in the history
….. (#1294)

* PR pipeline restructuring - one workflow calls multiple workflows

Signed-off-by: noopur <[email protected]>

* Bandit scan needs specific permissions

Signed-off-by: noopur <[email protected]>

* Specific permissions for Trivy scan

Signed-off-by: noopur <[email protected]>

* Final changes

Signed-off-by: noopur <[email protected]>

* Adding job names for better readability

Signed-off-by: noopur <[email protected]>

---------

Signed-off-by: noopur <[email protected]>
  • Loading branch information
noopurintel authored Jan 23, 2025
1 parent 9d45112 commit ecd3603
Show file tree
Hide file tree
Showing 19 changed files with 181 additions and 39 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/bandit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ on:
branches:
- develop
- v1.7.x
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

jobs:
bandit_scan:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docker-bench-security.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Docker Bench for Security

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
contents: read
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/double_ws_export.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
name: Double workspace export

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
contents: read
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/experimental_workflow_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ on:
branches:
- develop
- v1.7.x
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
contents: read
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/federated_runtime.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
name: Federated Runtime 301 MNIST Watermarking

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]

workflow_call:
workflow_dispatch:

permissions:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/gandlf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
name: GaNDLF TaskRunner

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
contents: read
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/hadolint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
name: Hadolint Security Scan

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
contents: read
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
name: Check code format

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
contents: read
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pki.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
name: Private Key Infrastructure

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
contents: read
Expand Down
147 changes: 147 additions & 0 deletions .github/workflows/pr_pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
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:
name: 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:
name: Check code format
uses: ./.github/workflows/lint.yml

docker_bench_security:
name: Docker Bench for Security
uses: ./.github/workflows/docker-bench-security.yml

double_workspace_export:
name: Double workspace export
uses: ./.github/workflows/double_ws_export.yml

fr_301_watermark_nb_run:
name: Federated Runtime 301 MNIST Watermarking
uses: ./.github/workflows/federated_runtime.yml

gandlf_taskrunner:
name: GaNDLF TaskRunner
uses: ./.github/workflows/gandlf.yml

hadolint_security_scan:
name: Hadolint Security Scan
uses: ./.github/workflows/hadolint.yml

private_key_infrastructure:
name: Private Key Infrastructure
uses: ./.github/workflows/pki.yml

pytest_coverage:
name: Pytest and code coverage
uses: ./.github/workflows/pytest_coverage.yml

straggler_handling:
name: Straggler Handling Test
uses: ./.github/workflows/straggler-handling.yml

task_runner:
name: TaskRunner
uses: ./.github/workflows/taskrunner.yml

taskrunner_eden_compression:
name: TaskRunner (Eden Compression)
uses: ./.github/workflows/taskrunner_eden_pipeline.yml

tr_docker_gramine_direct:
name: TaskRunner (docker/gramine-direct)
uses: ./.github/workflows/tr_docker_gramine_direct.yml

tr_docker_native:
name: TaskRunner (docker/native)
uses: ./.github/workflows/tr_docker_native.yml

trivy_scan:
name: 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

wf_functional_e2e:
name: Workflow Functional E2E
uses: ./.github/workflows/wf_functional_e2e.yml

workflow_interface_101_mnist:
name: Workflow Interface 101 MNIST Notebook
uses: ./.github/workflows/workflow_interface_101_mnist.yml

workflow_interface_tests:
name: Workflow Interface Tests
uses: ./.github/workflows/experimental_workflow_tests.yml

pipeline_status:
name: Pipeline Status
runs-on: ubuntu-22.04
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."
3 changes: 1 addition & 2 deletions .github/workflows/pytest_coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
name: Pytest and code coverage

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/straggler-handling.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
name: Straggler Handling Test

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
contents: read
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/taskrunner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
name: TaskRunner

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
contents: read
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/taskrunner_eden_pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
name: TaskRunner (Eden Compression)

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
contents: read
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/tr_docker_gramine_direct.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
name: TaskRunner (docker/gramine-direct)

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
contents: read
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/tr_docker_native.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
name: TaskRunner (docker/native)

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

permissions:
contents: read
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/trivy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ on:
branches:
- develop
- v1.7.x
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_call:
workflow_dispatch:

jobs:
build:
if: github.event.pull_request.draft == false
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/wf_functional_e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
name: Workflow_Functional_E2E

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]

workflow_call:

workflow_dispatch:
inputs:
num_rounds:
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/workflow_interface_101_mnist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@
name: Workflow Interface 101 MNIST Notebook

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]

workflow_call:
workflow_dispatch:

permissions:
Expand Down

0 comments on commit ecd3603

Please sign in to comment.