Reusable workflows are configured to be triggered to run as a reusable workflow job. This workflow must include a workflow_call
trigger with the applicable inputs
, secrets
, outputs
. Once configured this workflow can then be executed in a different workflow as a reusable workflow job. Refer to:
Considerations
-
Four is the maximum number of workflows levels allowed.
-
Twenty is the maximum number of unique reusable workflows that can be included in a single workflow.
-
Including
jobs.<job_id>.outputs
in a reusable workflow job is not supported.
URL Format
Use the absolute path to the reusable workflow in the workflow job uses:
-
{owner}/{repo}/.cloudbees/workflows/{filename}
-
{owner}/{repo}/.cloudbees/workflows/{filename}@{ref}
Usage examples
-
workflow-call
triggeron: workflow_call: inputs: config-path: required: true type: string default: ./config description: Path to config files for app secrets: access-token: required: true description: The token to use for deploying outputs: deploy-result: value: ${{ jobs.deploy-shared.outputs.result }} description: simple value output
-
Caller workflow
on: workflow_dispatch: jobs: deploy: uses: <owner>/<repo>/.cloudbees/workflows/<reusable-workflow.yaml@v2> with: config-path: ./config/demo-app secrets: access-token: ${{ secrets.token }} pass: needs: [deploy] if: needs.deploy.outputs.deploy-result == 'pass' steps: - name: Pass uses: docker://alpine:3.21 run: echo "Deploy success alert" fail: needs: [deploy] if: needs.deploy.outputs.deploy-result == 'fail' steps: - name: Handle deploy failure uses: docker://alpine:3.21 run: echo "Deploy failure alert"