# 为组织创建工作流模板

了解如何创建工作流模板，以帮助团队中的人员更轻松地添加新工作流程。

> \[!NOTE]
> GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。

## 创建工作流模板

此过程演示如何创建工作流模板和元数据文件。 元数据文件描述了在用户创建新工作流时如何向用户显示工作流模板。

1. 如果尚不存在，请在组织中创建新的 公共 存储库 `.github` 。
2. 创建名为 `workflow-templates` 的目录。
3. 在 `workflow-templates` 目录中创建新的工作流文件。

   如果需要引用存储库的默认分支，可以使用 `$default-branch` 占位符。 创建工作流程时，占位符将自动替换为仓库默认分支的名称。

   > \[!NOTE]
   > `runs-on` 键中的以下值也被视为占位符：
   >
   > *

`ubuntu-latest` 替换为 `[ self-hosted ]`。

> \*
> `windows-latest` 替换为 `[ self-hosted, windows ]`。
> \*
> `macos-latest` 替换为 `[ self-hosted, macOS ]`

例如，名为 `octo-organization-ci.yml` 的文件演示基本工作流。

```yaml copy
name: Octo Organization CI

on:
  push:
    branches: [ $default-branch ]
  pull_request:
    branches: [ $default-branch ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v6

      - name: Run a one-line script
        run: echo Hello from Octo Organization
```

1. 在 `workflow-templates` 目录中创建元数据文件。 元数据文件必须与工作流程文件同名，但扩展名不是 `.yml`，而必须附加 `.properties.json`。 例如，名为 `octo-organization-ci.properties.json` 的文件包含名为 `octo-organization-ci.yml` 的工作流文件的元数据：

   ```json copy
   {
       "name": "Octo Organization Workflow",
       "description": "Octo Organization CI workflow template.",
       "iconName": "example-icon",
       "categories": [
           "Go"
       ],
       "filePatterns": [
           "package.json$",
           "^Dockerfile",
           ".*\\.md$"
       ]
   }
   ```

   * `name`

   - **必需。** 工作流的名称。 这会显示在可用工作流程列表中。

   * `description`

   - **必需。** 工作流的说明。 这会显示在可用工作流程列表中。

   * `iconName`

   - **可选。** 指定工作流列表中显示的工作流图标。
     `iconName` 可以是以下类型之一：
     * 存储在 `workflow-templates` 目录中的 SVG 文件。 若要引用文件，该值必须是不带文件扩展名的文件名。 例如，名为 `example-icon.svg` 的 SVG 文件被引用为 `example-icon`。
     * 来自 GitHub 的 [Octicons](https://primer.style/octicons/) 集的图标。 若要引用 octicon，该值必须为 `octicon <icon name>`。 例如，`octicon smiley`。

   * `categories`

   - **可选。** 定义用于显示工作流的类别。 可以使用以下列表中的类别名称：
     * [starter-workflows](https://github.com/actions/starter-workflows/blob/main/README.md#categories) 存储库中的一般类别名称。

     * [linguist](https://github.com/github-linguist/linguist/blob/main/lib/linguist/languages.yml) 存储库列表中的 linguist 语言。

     * [starter-workflows](https://github.com/github-starter-workflows/repo-analysis-partner/blob/main/tech_stacks.yml) 存储库的列表中支持的技术堆栈。

   * `filePatterns`

   - **可选。** 如果用户的存储库在其根目录中具有与定义的正则表达式匹配的文件，则允许使用工作流。

2. 若要添加另一个工作流模板，请将文件添加到相同的 `workflow-templates` 目录。

## 后续步骤

* 有关工作流模板的参考信息，请参阅“[重用工作流配置](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/reusing-workflow-configurations#workflow-templates)”。