# 組織のワークフロー テンプレートを作成する

チームのユーザーがより簡単に新しいワークフローを追加できるように、ワークフロー テンプレートを作成する方法について学びます。

> \[!NOTE]
> GitHub Enterprise Server ホステッド ランナーは、現在 GitHub ではサポートされていません。

## ワークフロー テンプレートの作成

この手順では、ワークフロー テンプレートとメタデータ ファイルを作成する方法を示します。 メタデータ ファイルには、ユーザーが新しいワークフローを作成するときに、ワークフロー テンプレートがどのように表示されるかが記述されています。

1. まだ存在しない場合は、組織内に public `.github`repository を作成します。
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` ディレクトリにファイルを追加します。

## 次のステップ

* ワークフロー テンプレートの参照情報については、「[ワークフロー構成の再利用](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/reusing-workflow-configurations#workflow-templates)」を参照してください。