](/en/actions/security-guides/using-githubs-security-features-to-secure-your-use-of-github-actions)
    * [ Automatic token authentication  ](/en/actions/security-guides/automatic-token-authentication)

  * Creating actions 

    * [ About custom actions  ](/en/actions/creating-actions/about-custom-actions)
    * [ Create a Docker container action  ](/en/actions/creating-actions/creating-a-docker-container-action)
    * [ Create a JavaScript action  ](/en/actions/creating-actions/creating-a-javascript-action)
    * [ Create a composite action  ](/en/actions/creating-actions/creating-a-composite-action)
    * [ Metadata syntax  ](/en/actions/creating-actions/metadata-syntax-for-github-actions)
    * [ Dockerfile support  ](/en/actions/creating-actions/dockerfile-support-for-github-actions)
    * [ Set exit codes  ](/en/actions/creating-actions/setting-exit-codes-for-actions)
    * [ Publish in GitHub Marketplace  ](/en/actions/creating-actions/publishing-actions-in-github-marketplace)
    * [ Share from your private repository  ](/en/actions/creating-actions/sharing-actions-and-workflows-from-your-private-repository)
    * [ Share with your organization  ](/en/actions/creating-actions/sharing-actions-and-workflows-with-your-organization)
    * [ Release and maintain actions  ](/en/actions/creating-actions/releasing-and-maintaining-actions)
    * [ CLI setup action  ](/en/actions/creating-actions/developing-a-third-party-cli-action)

  * [ Guides for GitHub Actions  ](/en/actions/guides)

  * [ GitHub Actions ](/en/actions "GitHub Actions") / 
  * [ Using workflows ](/en/actions/using-workflows "Using workflows") / 
  * [ Reuse workflows ](/en/actions/using-workflows/reusing-workflows "Reuse workflows")

#  Reusing workflows

Learn how to avoid duplication when creating a workflow by reusing existing
workflows.

##  In this article

  * Overview 
  * Access to reusable workflows 
  * Using runners 
  * Limitations 
  * Creating a reusable workflow 
  * Calling a reusable workflow 
  * Nesting reusable workflows 
  * Using outputs from a reusable workflow 
  * Monitoring which workflows are being used 
  * Re-running workflows and jobs with reusable workflows 
  * Next steps 

##  Overview

Rather than copying and pasting from one workflow to another, you can make
workflows reusable. You and anyone with access to the reusable workflow can
then call the reusable workflow from another workflow.

Reusing workflows avoids duplication. This makes workflows easier to maintain
and allows you to create new workflows more quickly by building on the work of
others, just as you do with actions. Workflow reuse also promotes best
practice by helping you to use workflows that are well designed, have already
been tested, and have been proven to be effective. Your organization can build
up a library of reusable workflows that can be centrally maintained.

The diagram below shows an in-progress workflow run that uses a reusable
workflow.

  * After each of three build jobs on the left of the diagram completes successfully, a dependent job called "Deploy" is run. 
  * The "Deploy" job calls a reusable workflow that contains three jobs: "Staging", "Review", and "Production." 
  * The "Production" deployment job only runs after the "Staging" job has completed successfully. 
  * When a job targets an environment, the workflow run displays a progress bar that shows the number of steps in the job. In the diagram below, the "Production" job contains 8 steps, with step 6 currently being processed. 
  * Using a reusable workflow to run deployment jobs allows you to run those jobs for each build without duplicating code in workflows. 

![Diagram of a workflow calling a reusable
workflow.](/assets/cb-34427/images/help/actions/reusable-workflows-ci-cd.png)

A workflow that uses another workflow is referred to as a "caller" workflow.
The reusable workflow is a "called" workflow. One caller workflow can use
multiple called workflows. Each called workflow is re