Introduction to Reusable Workflows
A reusable workflow is a pre-defined GitHub Actions workflow that can be called from another workflow. Reusable workflows make it easy to treat a workflow like an Action. It can be referenced and executed from other workflows in the caller’s context. This allows teams to share common workflow patterns, to centralize best practices, and to centralize the development of processes.
Reusable workflows listen for a special event, workflow_call. The workflow must be in the .github/workflows folder to be triggered. The workflow can also receive inputs.
Benefits of using reusable workflows:
- Duplication is minimized by reusing workflows. This makes workflows easier to maintain and allows you to easily develop new workflows by building on the work of others, much like you do with actions.
- You can reuse workflows rather than copying and pasting them from one to the next. The reusable process can then be called from another workflow by you or anybody with access to it.
- Reusing workflows reduces redundancy and allows you to create a library of reusable workflows that can be maintained inside your company.
Creating Reusable workflow from GitHub Actions:
- Reusable workflows are the same as ordinary GitHub Actions workflows, except that they must be triggered by a single special event called workflow call before they may be used as reusable workflows.
- The keyword uses can then be added to this workflow and it can be used in other workflows.
- To have access to reusable workflows within your organization. Simply go to Actions in your settings and select Allow all actions and reusable workflows in your organization.
Example of Reusable workflow using in another workflow:
The below workflow is the reusable workflow with name - Workflow-A.yml
Below is the workflow calling reusable workflow with name - workflow-B.yml.
Limitations with reusable workflows:
- If you have a reusable workflow in a private repository, it can only be used by other workflows in the same private repository.
- A reusable workflow can only call another reusable workflow, but it can't reference more than once.
- If reusable workflows are stored in a public repository, your organization may only use them in that repository.
- Reusable workflows can't call other reusable workflows.