Co-authored-by: Kevin Heis <heiskr@users.noreply.github.com> Co-authored-by: Sarah Edwards <skedwards88@github.com>
5.0 KiB
title, shortTitle, intro, redirect_from, versions, type, topics
| title | shortTitle | intro | redirect_from | versions | type | topics | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Creating starter workflows for your organization | Creating starter workflows | Learn how you can create starter workflows to help people in your team add new workflows more easily. |
|
|
tutorial |
|
{% data reusables.actions.enterprise-beta %} {% data reusables.actions.enterprise-github-hosted-runners %}
Overview
{% data reusables.actions.workflow-organization-templates %}
{% data reusables.actions.starter-workflow-categories %}
Creating a starter workflow
Starter workflows can be created by users with write access to the organization's .github repository. These can then be used by organization members who have permission to create workflows.
{% ifversion fpt %} Starter workflows created by users can only be used to create workflows in public repositories. Organizations using {% data variables.product.prodname_ghe_cloud %} can also use starter workflows to create workflows in private repositories. For more information, see the {% data variables.product.prodname_ghe_cloud %} documentation. {% endif %}
{% ifversion fpt or ghes > 3.3 or ghae-issue-4757 or ghec %} {% note %}
Note: To avoid duplication among starter workflows you can call reusable workflows from within a workflow. This can help make your workflows easier to maintain. For more information, see "Reusing workflows."
{% endnote %} {% endif %}
This procedure demonstrates how to create a starter workflow and metadata file. The metadata file describes how the starter workflows will be presented to users when they are creating a new workflow.
-
If it doesn't already exist, create a new public 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.For example, this file named
octo-organization-ci.ymldemonstrates a basic workflow.name: Octo Organization CI on: push: branches: [ $default-branch ] pull_request: branches: [ $default-branch ] jobs: build: runs-on: ubuntu-latest steps: - uses: {% data reusables.actions.action-checkout %} - 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:{ "name": "Octo Organization Workflow", "description": "Octo Organization CI starter workflow.", "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's displayed in the list of workflows. TheiconNamemust be the name of an SVG file, without the file name extension, stored in theworkflow-templatesdirectory. For example, an SVG file namedexample-icon.svgis referenced asexample-icon.categories- Optional. Defines the language category of the workflow. When a user views the available starter workflows for a repository, the workflows that match the identified language for the project are featured more prominently. For information on the available language categories, see https://github.com/github/linguist/blob/master/lib/linguist/languages.yml.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 starter workflow, add your files to the same workflow-templates directory. For example:
Next steps
To continue learning about {% data variables.product.prodname_actions %}, see "Using starter workflows."
