Introduction
Note
Enterprise code rulesets are currently in public preview and subject to change.
You can create rulesets to control how users can interact with code in repositories across your enterprise. You can:
- Create a branch or tag ruleset to control things like who can push commits to a certain branch, how commits must be formatted, or who can delete or rename a tag.
- Create a push ruleset to block pushes to a private or internal repository and the repository's entire fork network. Push rulesets allow you to block pushes based on file extensions, file path lengths, file and folder paths, and file sizes.
To learn more, see ルールセットについて.
Importing prebuilt rulesets
To import a prebuilt ruleset created by GitHub, see github/ruleset-recipes
.
JSON ファイルを使用して、別のリポジトリまたは組織からルールセットをインポートできます。 これは、複数のリポジトリまたは組織に同じルールセットを適用する場合に便利です。 For more information, see "組織内のリポジトリのルールセットを管理する."
How will I define where my ruleset applies?
Rulesets allow you to flexibly target the organizations, repositories, and branches where you want rules to apply.
- To target organizations, you can select all, choose from a list, or define a dynamic pattern for organization names using
fnmatch
syntax. For syntax details, see リポジトリのルールセットの作成. - Within those organizations, you can target all repositories, or target a dynamic list by custom property. See 組織内リポジトリのカスタム プロパティの管理.
- Within the repositories, you can target certain branches or tags: all branches, the default branch, or a dynamic list using
fnmatch
syntax.
When you create a ruleset that targets branches in a repository, repository administrators can no longer rename branches or change the default branch in the targeted repository. They can still create and delete branches if they have the appropriate permissions.
How can I control the format of commits?
In branch or tag rulesets, you can add a rule that restricts the format of commit metadata such as commit message or author email.
If you select Must match a given regex pattern restriction, you can use regular expression syntax to define patterns that the metadata must or must not match. For syntax details and examples, see リポジトリのルールセットの作成.
Using ruleset enforcement statuses
ルールセットの作成または編集中に、適用ステータスを使用してルールセットの適用方法を構成できます。
ルールセットには、次の適用ステータスのいずれかを選択できます。
- アクティブ: ルールセットは作成時に適用されます。
- 評価: ルールセットは適用されませんが、[Rule Insights] ページでルールに違反するアクションと違反しないアクションを監視できます。
- 無効: ルールセットは、適用または評価されません。
「評価」モードを使用することは、ルールセットを適用せずにテストするための優れたオプションです。 「ルールの分析情報」ページを使用して、そのコントリビューションがルールに違反したかどうかを確認できます。 詳しくは、「リポジトリのルールセットの管理」をご覧ください。
Creating a branch or tag ruleset
-
GitHub の右上隅にあるプロフィール写真をクリックします。
-
ご自分の環境に応じて、[Your enterprise] または [Your enterprises] をクリックし、表示するエンタープライズをクリックします。
-
ページの左側にある Enterprise アカウントのサイドバーで、 [ポリシー] をクリックします。
-
Under "Policies", click Code.
-
「新しいルールセット」をクリックします。
-
ブランチを対象とするルールセットを作成するには、 [新しいブランチ ルールセット] をクリックします。
-
または、タグを対象とするルールセットを作成するには、[新しいタグ ルールセット] をクリックします。
-
[ルールセット名] に、ルールセットの名前を入力します。
-
必要に応じて、既定の適用ステータスを変更するには、 [無効] をクリックし、新しい適用ステータスを選択します。 適用ステータスの詳細については、「ルールセットについて」を参照してください。
Granting bypass permissions for your branch or tag ruleset
You can grant certain roles, teams, or apps bypass permissions as well as the ability to approve bypass requests for your ruleset.
The following are eligible for bypass access:
- Repository admins, organization owners, and enterprise owners
- The maintain or write role, or deploy keys.
-
To grant bypass permissions for the ruleset, in the "Bypass list" section, click Add bypass.
-
In the "Add bypass" modal dialog that appears, search for the role, team, or app you would like to grant bypass permissions, then select the role, team, or app from the "Suggestions" section and click Add Selected.
-
必要に応じて、リポジトリに直接プッシュすることを許可せずにアクターにバイパスを許可するには、[常に許可] の右側にある をクリックし、次に [pull request のみ] をクリックします。
選択したアクターは、リポジトリに変更を加えるために pull request を開いて、pull request と監査ログに変更の明確な証跡を作成する必要があります。 アクターは、ブランチの保護をバイパスして、その pull request をマージすることを選択できます。
Choosing which organizations to target in your enterprise
Select all organizations, choose a selection of existing organizations, or set a dynamic list by name. If you use Enterprise Managed Users, you can also choose to target all repositories owned by users in your enterprise.
If you set a dynamic list, you'll add one or more naming patterns using fnmatch
syntax. For example, the string *open-source
would match any organization with a name that ends with open-source
. For syntax details, see "リポジトリのルールセットの作成."
Choosing which repositories to target in your enterprise
Within the selected organizations, you can target all repositories or target a dynamic list by custom property. See 組織内リポジトリのカスタム プロパティの管理.
Choosing which branches or tags to target
ブランチまたはタグをターゲットにするには、[ターゲット ブランチ] または [ターゲット タグ] セクションで、[ターゲットの追加] を選び、ブランチまたはタグを含めるまたは除外する方法を選びます。 fnmatch
構文を使って、パターンに基づいてブランチまたはタグを含めたり除外したりできます。 詳細については、「fnmatch
構文の使用」を参照してください。
複数のターゲット条件を同じルールセットに追加できます。 たとえば、既定のブランチを含め、*feature*
のパターンに一致するブランチを含めてから、not-a-feature
のパターンに一致する特定のブランチを除外することができます。
Selecting branch or tag protections
In the "Branch protections" or "Tag protections" section, select the rules you want to include in the ruleset. When you select a rule, you may be able to enter additional settings for the rule. For more information on the rules, see "ルールセットで使用できるルール"
Adding metadata restrictions
メタデータの制限は、リポジトリでのコミット間の整合性の向上を目的とする必要があります。 pull request でのコード レビュー必須化などのセキュリティ対策を置き換えることを意図したものではありません。
Note
ブランチをスカッシュ マージする場合、そのブランチに対するすべてのコミットは、ベース ブランチのメタデータ要件を満たす必要があります。
-
コミット メタデータまたはブランチ名を制御するルールを追加するには、ルールセットを作成または編集するときに [Restrictions] セクションで、[Restrict commit metadata] または [Restrict branch names] をクリックします。
-
制限の設定を構成して、[追加] をクリックします。 同じルールセットに複数の制限を追加できます。
-
特定の正規表現パターンと一致させるには、[要件] ドロップダウンで [特定の正規表現パターンに一致する必要がある] を選択します。
[一致するパターンで開始する必要がある] など、ほとんどの要件では、入力したパターンはリテラルに解釈され、ワイルドカードはサポートされません。 たとえば、
*
文字が表すのは、リテラルな*
文字のみです。より複雑なパターンの場合は、[特定の正規表現パターンに一致する必要がある] または [特定の正規表現パターンに一致しない] を選び、正規表現構文を使って、一致するパターンを定義できます。 詳細については、「メタデータのコミットに正規表現を使う」を参照してください。
リポジトリのルールセットを表示しているすべてのユーザーは、指定した説明を表示できます。
-
必要に応じて、メタデータ制限を含むルールセットを適用する前に、ルールセットに対して "評価" の適用状態を選択し、共同作成者に影響を与えることなくメタデータ制限の効果をテストします。 メタデータの制限の詳細については、「ルールセットで使用できるルール」を参照してください。
Finalizing your branch or tag ruleset and next steps
ルールセットの作成を完了するには、[作成] をクリックします。 ルールセットの適用ステータスが "アクティブ" に設定されている場合、ルールセットはすぐに有効になります。
ルールセットの分析情報を表示して、ルールが共同作成者にどのように影響しているかを確認できます。 適用ステータスが "評価" に設定されている場合、ルール セットがアクティブであった場合に合格または失敗したアクションを確認できます。 ルールセットの分析情報の詳細については、「リポジトリのルールセットの管理」を参照してください。
Creating a push ruleset
Note
このルールセットでは、このリポジトリのフォーク ネットワーク全体にプッシュ制限が適用されます。
You can create a push ruleset for private or internal repositories in your enterprise.
- GitHub の右上隅にあるプロフィール写真をクリックします。
- ご自分の環境に応じて、[Your enterprise] または [Your enterprises] をクリックし、表示するエンタープライズをクリックします。
- In the left sidebar, in the "Policies" section, click Code.
- Click New ruleset.
- Click New push ruleset.
- Under "Ruleset name," type a name for the ruleset.
- Optionally, to change the default enforcement status, click Disabled and select an enforcement status. For more information about enforcement statuses, see ルールセットについて
Granting bypass permissions for your push ruleset
Note
Bypass permissions for push rulesets that target a repository will be inherited by the entire fork network for this repository. つまり、このリポジトリのフォーク ネットワーク全体のリポジトリでこのルールセットをバイパスできる唯一のユーザーが、ルート リポジトリでこのルールセットをバイパスできるユーザーです。
You can grant certain roles, teams, or apps bypass permissions as well as the ability to approve bypass requests for your ruleset. The following are eligible for bypass access:
- Repository admins, organization owners, and enterprise owners
- The maintain or write role, or deploy keys
- To grant bypass permissions for the ruleset, in the "Bypass list" section, click Add bypass.
- In the "Add bypass" modal dialog that appears, search for the role, team, or app you would like to grant bypass permissions, then select the role, team, or app from the "Suggestions" section and click Add Selected.
Choosing which organizations to target in your enterprise
Select all organizations, choose a selection of existing organizations, or set a dynamic list by name. If you use Enterprise Managed Users, you can also choose to target all repositories owned by users in your enterprise.
If you set a dynamic list, you'll add one or more naming patterns using fnmatch
syntax. For example, the string *open-source
would match any organization with a name that ends with open-source
. For syntax details, see "リポジトリのルールセットの作成."
Choosing which repositories to target in your enterprise
Within your chosen organizations, you can target all repositories, or target a dynamic list using custom properties. See 組織内リポジトリのカスタム プロパティの管理.
Selecting push protections
ファイル拡張子、ファイル パスの長さ、ファイルとフォルダーのパス、ファイル サイズに基づいて、このリポジトリとこのリポジトリのフォーク ネットワーク全体へのプッシュをブロックできます。
構成したプッシュ保護によって、このリポジトリ内およびこのリポジトリのフォーク ネットワーク全体のプッシュがブロックされます。
-
[プッシュ保護] で、適用する制限をクリックします。 次に、選択した制限の詳細を入力します。
ファイル パスの制限については、部分パスまたは完全パスを使用できます。 これには
fnmatch
の構文を使用できます。 たとえば、test/demo/**/*
を対象とする制限により、test/demo/
ディレクトリ内のファイルまたはフォルダーへのプッシュが禁止されます。test/docs/pushrules.md
を対象とした制限により、test/docs/
ディレクトリ内のpushrules.md
ファイルへのプッシュが禁止されます。 詳しくは、「リポジトリのルールセットの作成」をご覧ください。
Finalizing your push ruleset and next steps
ルールセットの作成を完了するには、[作成] をクリックします。 ルールセットの適用ステータスが "アクティブ" に設定されている場合、ルールセットはすぐに有効になります。
ルールセットの分析情報を表示して、ルールが共同作成者にどのように影響しているかを確認できます。 適用ステータスが "評価" に設定されている場合、ルール セットがアクティブであった場合に合格または失敗したアクションを確認できます。 ルールセットの分析情報の詳細については、「リポジトリのルールセットの管理」を参照してください。