注意
GitHub Enterprise Server users should use self-hosted runners. GitHub-hosted runners are not supported.
Creating workflow templates
This procedure demonstrates how to create a workflow template and metadata file. The metadata file describes how the workflow templates will be presented to users when they are creating a new workflow.
-
If it doesn't already exist, create a new repository named
.githubin your organization. -
Create a directory named
workflow-templates. -
Create your new workflow file inside the
workflow-templatesdirectory.If you need to refer to a repository's default branch, you can use the
$default-branchplaceholder. When a workflow is created the placeholder will be automatically replaced with the name of the repository's default branch.注意
The following values in the
runs-onkey are also treated as placeholders:ubuntu-latestis replaced with[ self-hosted ]windows-latestis replaced with[ self-hosted, windows ]macos-latestis replaced with[ self-hosted, macOS ]
For example, this file named
octo-organization-ci.ymldemonstrates a basic workflow.YAML name: Octo Organization CI on: push: branches: [ $default-branch ] pull_request: branches: [ $default-branch ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: Run a one-line script run: echo Hello from Octo Organizationname: Octo Organization CI on: push: branches: [ $default-branch ] pull_request: branches: [ $default-branch ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: Run a one-line script run: echo Hello from Octo Organization -
Create a metadata file inside the
workflow-templatesdirectory. The metadata file must have the same name as the workflow file, but instead of the.ymlextension, it must be appended with.properties.json. For example, this file namedocto-organization-ci.properties.jsoncontains the metadata for a workflow file namedocto-organization-ci.yml:JSON { "name": "Octo Organization Workflow", "description": "Octo Organization CI workflow template.", "iconName": "example-icon", "categories": [ "Go" ], "filePatterns": [ "package.json$", "^Dockerfile", ".*\\.md$" ] }{ "name": "Octo Organization Workflow", "description": "Octo Organization CI workflow template.", "iconName": "example-icon", "categories": [ "Go" ], "filePatterns": [ "package.json$", "^Dockerfile", ".*\\.md$" ] }name- Required. The name of the workflow. This is displayed in the list of available workflows.description- Required. The description of the workflow. This is displayed in the list of available workflows.iconName- Optional. Specifies an icon for the workflow that is displayed in the list of workflows.iconNamecan be one of the following types:- An SVG file that is stored in the
workflow-templatesdirectory. To reference a file, the value must be the file name without the file extension. For example, an SVG file namedexample-icon.svgis referenced asexample-icon. - An icon from GitHub's set of Octicons. To reference an octicon, the value must be
octicon <icon name>. For example,octicon smiley.
- An SVG file that is stored in the
categories- Optional. Defines the categories that the workflow is shown under. You can use category names from the following lists:- General category names from the starter-workflows repository.
- Linguist languages from the list in the linguist repository.
- Supported tech stacks from the list in the starter-workflows repository.
filePatterns- Optional. Allows the workflow to be used if the user's repository has a file in its root directory that matches a defined regular expression.
-
To add another workflow template, add your files to the same
workflow-templatesdirectory.
Next steps
- For reference information about workflow templates, see Reusing workflow configurations.