Reusable workflows

1 minute read

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 trigger

    on: 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"