はじめに
ユーザーが Enterprise 全体のリポジトリ内のコードを操作する方法を制御するルールセットを作成できます。 次のようにすることができます。
- どのユーザーが特定のブランチにコミットをプッシュできるか、コミットをどのようにフォーマットする必要があるか、どのユーザーがタグを削除または名前変更できるかといったことを制御するには、ブランチまたはタグのルールセットを作成します。
- プライベートまたは内部リポジトリと、リポジトリのフォーク ネットワーク全体へのプッシュを禁止するには、プッシュ ルールセットを作成します。 プッシュ ルールセットを使用すると、ファイル拡張子、ファイル パスの長さ、ファイルとフォルダーのパス、およびファイル サイズに基づいてプッシュをブロックできます。
詳細については、「ルールセットについて」を参照してください。
ルールセットをインポートする
GitHubによって作成された事前構築済みのルールセットをインポートするには、[`github/ruleset-recipes`](https://github.com/github/ruleset-recipes)を参照してください。
JSON ファイルを使って既存のルールセットをインポートできます。 これは、複数のリポジトリまたは組織に同じルールセットを適用する場合に便利です。 詳細については、 [AUTOTITLE を](/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization#using-ruleset-history)参照してください。
ルールセットが適用される場所の定義方法
ルールセットを使うと、ルールを適用する対象の organization、リポジトリ、ブランチを柔軟に指定できます。
-
**組織**を対象にするには、すべてを選択するか、一覧から選択するか、`fnmatch`構文を使用して組織名の動的パターンを定義するか、組織のカスタム プロパティを使用してメタデータに基づいて組織を動的にターゲットにすることができます。 構文の詳細については、「[AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository#using-fnmatch-syntax)」を参照してください。 カスタム プロパティの詳細については、「 [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/custom-properties)」を参照してください。 -
これらの組織内では、すべての リポジトリをターゲットにすることも、カスタム プロパティまたはデプロイ コンテキストによって動的リストをターゲットにすることもできます。
-
リポジトリ内では、特定のブランチまたはタグ (すべてのブランチ、既定のブランチ、または
fnmatch構文を使った動的リスト) を対象にすることができます。
リポジトリ内のブランチを対象とするルールセットを作成すると、リポジトリ管理者は、ブランチの名前を変更したり、対象のリポジトリ内の既定のブランチを変更したりできなくなります。 適切なアクセス許可を持っている場合は、ブランチを作成および削除できます。
コミットの形式を制御する方法
ブランチまたはタグのルールセットでは、コミット メッセージや作成者のメールなどのコミット メタデータの形式を制限するルールを追加できます。
**[Must match a given regex pattern restriction]** を選ぶと、正規表現構文を使って、メタデータが一致する必要がある、または一致してはならないパターンを定義できます。 構文の詳細と例については、「[AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository#using-regular-expressions-for-commit-metadata)」を参照してください。
ルールセット適用状況の利用
ルールセットの作成または編集中に、適用ステータスを使用してルールセットの適用方法を構成できます。
ルールセットには、次の適用ステータスのいずれかを選択できます。
-
**<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-play" aria-label="play" role="img"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path></svg> Active:** ルールセットは作成時に適用されます。 -
**<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-meter" aria-label="meter" role="img"><path d="M8 1.5a6.5 6.5 0 1 0 6.016 4.035.75.75 0 0 1 1.388-.57 8 8 0 1 1-4.37-4.37.75.75 0 1 1-.569 1.389A6.473 6.473 0 0 0 8 1.5Zm6.28.22a.75.75 0 0 1 0 1.06l-4.063 4.064a2.5 2.5 0 1 1-1.06-1.06L13.22 1.72a.75.75 0 0 1 1.06 0ZM7 8a1 1 0 1 0 2 0 1 1 0 0 0-2 0Z"></path></svg> Evaluate:** ルールセットは適用されませんが、[Rule Insights] ページでルールに違反するアクションと違反しないアクションを監視できます。 -
**<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-skip" aria-label="skip" role="img"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm9.78-2.22-5.5 5.5a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l5.5-5.5a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg> Disabled:** ルールセットは、適用または評価されません。
「評価」モードを使用することは、ルールセットを適用せずにテストするための優れたオプションです。 「ルールの分析情報」ページを使用して、そのコントリビューションがルールに違反したかどうかを確認できます。
分岐またはタグルールセットの作成
-
企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
-
ページの上部にある [ Policies] をクリックします。
-
[Policies] で [Code] をクリックします。
-
「新しいルールセット」をクリックします。
-
ブランチを対象とするルールセットを作成するには、 [新しいブランチ ルールセット] をクリックします。 または、タグを対象とするルールセットを作成するには、[新しいタグ ルールセット] をクリックします。
-
[ルールセット名] に、ルールセットの名前を入力します。
-
必要に応じて、既定の適用状態を変更するには、 [Disabled] をクリックして、新しい適用状態を選びます。
ブランチまたはタグのルールセットに対するバイパス アクセス許可の付与
特定のロール、チーム、またはアプリにバイパス アクセス許可を付与することや、ルールセットのバイパス要求を承認することができます。
バイパス アクセスの対象になるものを次に示します。
- エンタープライズ チーム、エンタープライズ アプリ、エンタープライズ ロール (パブリック プレビュー)
- リポジトリ管理者、組織所有者、企業所有者
- メンテナンスまたは書き込みロール、またはキーの配置。
-
Copilot クラウドエージェント。 Copilot クラウドエージェント の詳細については、「[AUTOTITLE](/copilot/concepts/agents/cloud-agent/about-cloud-agent#limitations-in-copilot-cloud-agents-compatibility-with-other-features)」を参照してください。
-
ルールセットにバイパス アクセス許可を付与するには、[Bypass list] セクションで [Add bypass] をクリックします。
-
表示される [バイパスの追加] モーダル ダイアログで、バイパスアクセス許可を付与するロール、チーム、またはアプリを検索し、[提案] セクションからロール、チーム、またはアプリを選択し、[選択項目の追加] をクリックします。
-
必要に応じて、リポジトリに直接プッシュすることを許可せずにアクターにバイパスを許可するには、[常に許可] の右側にある をクリックし、次に [pull request のみ] をクリックします。
選択したアクターは、リポジトリに変更を加えるために pull request を開いて、pull request と監査ログに変更の明確な証跡を作成する必要があります。 アクターは、ブランチの保護をバイパスして、その pull request をマージすることを選択できます。
事業内でターゲットにする組織を選ぶ
すべての organization を選ぶか、既存の organization を選ぶか、名前で動的リストを設定します。 Enterprise Managed Usersを使用する場合は、企業内のユーザーが所有するすべてのリポジトリを対象にすることもできます。
動的リストを設定する場合は、fnmatch 構文を使って 1 つ以上の名前付けパターンを追加します。 たとえば、文字列 *open-source は、名前が open-source で終わる organization と一致します。 構文の詳細については、「リポジトリのルールセットの作成」を参照してください。
Enterprise 内で対象とするリポジトリを選ぶ
選択した組織内では、すべてのリポジトリをターゲットにすることも、フィルターに基づいて動的リストをターゲットにすることもできます。
- カスタム プロパティでフィルター処理できます。 「Organization 内リポジトリのカスタム プロパティの管理」を参照してください。
- 組織が linked artifacts pageにレコードを追加している場合は、 デプロイ可能な リポジトリ (アクティブなストレージ レコードを持つ) または デプロイされている (アクティブなデプロイ レコードを持つ) リポジトリをターゲットにすることができます。 「リンクされた成果物について」を参照してください。
ターゲットにするブランチまたはタグの選択
ブランチまたはタグをターゲットにするには、[ターゲット ブランチ] または [ターゲット タグ] セクションで、[ターゲットの追加] を選び、ブランチまたはタグを含めるまたは除外する方法を選びます。 fnmatch 構文を使って、パターンに基づいてブランチまたはタグを含めたり除外したりできます。 詳細については、「fnmatch 構文の使用」を参照してください。
複数のターゲット条件を同じルールセットに追加できます。 たとえば、既定のブランチを含め、*feature* のパターンに一致するブランチを含めてから、not-a-feature のパターンに一致する特定のブランチを除外することができます。
ブランチまたはタグの保護の選択
[ブランチ保護] または [タグ保護] セクションで、ルールセットに含めるルールを選びます。 ルールを選ぶと、そのルールに追加設定を入力できる場合があります。 ルールの詳細については、「ルールセットで使用できるルール」を参照してください。
メタデータの制限追加
メタデータの制限は、リポジトリでのコミット間の整合性の向上を目的とする必要があります。 pull request でのコード レビュー必須化などのセキュリティ対策を置き換えることを意図したものではありません。
メモ
ブランチをスカッシュ マージする場合、そのブランチに対するすべてのコミットがベース ブランチのメタデータ要件を満たす必要があります。
正規表現で行末アンカーを使用する場合は、単独で\n?$するのではなく、$を使用します。 省略可能な \n? は、Git プッシュ/CLI フローに存在する可能性がある末尾の改行と一致しますが、Web UI と API を介して作成されたコミットに対して引き続き動作します。
-
コミット メタデータまたはブランチ名を制御するルールを追加するには、ルールセットを作成または編集するときに [Restrictions] セクションで、[Restrict commit metadata] または [Restrict branch names] をクリックします。
-
制限の設定を構成して、[追加] をクリックします。 同じルールセットに複数の制限を追加できます。
-
特定の正規表現パターンと一致させるには、[要件] ドロップダウンで [特定の正規表現パターンに一致する必要がある] を選択します。
[一致するパターンで開始する必要がある] など、ほとんどの要件では、入力したパターンはリテラルに解釈され、ワイルドカードはサポートされません。 たとえば、
*文字が表すのは、リテラルな*文字のみです。より複雑なパターンの場合は、[特定の正規表現パターンに一致する必要がある] または [特定の正規表現パターンに一致しない] を選び、正規表現構文を使って、一致するパターンを定義できます。 詳細については、「メタデータのコミットに正規表現を使う」を参照してください。
リポジトリのルールセットを表示しているすべてのユーザーは、指定した説明を表示できます。
-
必要に応じて、メタデータ制限を含むルールセットを適用する前に、ルールセットに対して "評価" の適用状態を選択し、共同作成者に影響を与えることなくメタデータ制限の効果をテストします。 メタデータの制限の詳細については、「ルールセットで使用できるルール」を参照してください。
ブランチまたはタグのルールセットの最終化と次のステップ
ルールセットの作成を完了するには、[作成] をクリックします。 ルールセットの適用ステータスが "アクティブ" に設定されている場合、ルールセットはすぐに有効になります。
ルールセットの分析情報を表示して、ルールが共同作成者にどのように影響しているかを確認できます。 適用ステータスが "評価" に設定されている場合、ルール セットがアクティブであった場合に合格または失敗したアクションを確認できます。 ルールセットの分析情報の詳細については、「リポジトリのルールセットの管理」を参照してください。
プッシュルールセットの作成
メモ
このルールセットを使うと、リポジトリのフォーク ネットワーク全体にプッシュ制限を適用できます。
Enterprise 内のプライベートまたは内部リポジトリのプッシュ ルールセットを作成できます。
- 企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
- 左側のサイドバーの [Policies] セクションで、[Code] をクリックします。
- 「新しいルールセット」をクリックします。
-
**新しいプッシュルールセット** をクリックします。 - [ルールセット名] に、ルールセットの名前を入力します。
- 必要に応じて、既定の適用状態を変更するには、[Disabled] をクリックして適用状態を選びます。 適用状態の詳細については、「ルールセットについて」を参照してください。
プッシュ ルールセットに対するバイパス アクセス許可の付与
メモ
リポジトリをターゲットとするプッシュ ルールセットのアクセス許可は、このリポジトリのフォーク ネットワーク全体に継承されます。 つまり、このリポジトリのフォーク ネットワーク全体のリポジトリでこのルールセットをバイパスできる唯一のユーザーが、ルート リポジトリでこのルールセットをバイパスできるユーザーです。
特定のロール、チーム、またはアプリにバイパス アクセス許可を付与することや、ルールセットのバイパス要求を承認することができます。 バイパス アクセスの対象になるものを次に示します。
- エンタープライズ チーム、エンタープライズ アプリ、エンタープライズ ロール (パブリック プレビュー)
- リポジトリ管理者、組織所有者、企業所有者
- メンテナンスまたは書き込みのロール、あるいはデプロイ キー
-
Copilot クラウドエージェント。 Copilot クラウドエージェント の詳細については、「[AUTOTITLE](/copilot/concepts/agents/cloud-agent/about-cloud-agent#limitations-in-copilot-cloud-agents-compatibility-with-other-features)」を参照してください。
- ルールセットにバイパス アクセス許可を付与するには、[Bypass list] セクションで [Add bypass] をクリックします。
- 表示される [バイパスの追加] モーダル ダイアログで、バイパスアクセス許可を付与するロール、チーム、またはアプリを検索し、[提案] セクションからロール、チーム、またはアプリを選択し、[選択項目の追加] をクリックします。
事業内でターゲットにする組織を選ぶ
すべての organization を選ぶか、既存の organization を選ぶか、名前で動的リストを設定します。 Enterprise Managed Usersを使用する場合は、企業内のユーザーが所有するすべてのリポジトリを対象にすることもできます。
動的リストを設定する場合は、fnmatch 構文を使って 1 つ以上の名前付けパターンを追加します。 たとえば、文字列 *open-source は、名前が open-source で終わる organization と一致します。 構文の詳細については、「リポジトリのルールセットの作成」を参照してください。
Enterprise 内で対象とするリポジトリを選ぶ
選んだ organization 内で、すべてのリポジトリを対象にすることや、カスタム プロパティを使って動的リストを対象にすることができます。 「Organization 内リポジトリのカスタム プロパティの管理」を参照してください。
プッシュ保護の選択
ファイル拡張子、ファイル パスの長さ、ファイルとフォルダーのパス、ファイル サイズに基づいて、このリポジトリとこのリポジトリのフォーク ネットワーク全体へのプッシュをブロックできます。
構成したプッシュ保護によって、このリポジトリ内およびこのリポジトリのフォーク ネットワーク全体のプッシュがブロックされます。
-
[プッシュ保護] で、適用する制限をクリックします。 次に、選択した制限の詳細を入力します。
ファイル パスの制限については、部分パスまたは完全パスを使用できます。 これには
fnmatchの構文を使用できます。 たとえば、test/demo/**/*を対象とする制限により、test/demo/ディレクトリ内のファイルまたはフォルダーへのプッシュが禁止されます。test/docs/pushrules.mdを対象とした制限により、test/docs/ディレクトリ内のpushrules.mdファイルへのプッシュが禁止されます。 詳しくは、「リポジトリのルールセットの作成」をご覧ください。
プッシュルールセットの確定と次のプロセス
ルールセットの作成を完了するには、[作成] をクリックします。 ルールセットの適用ステータスが "アクティブ" に設定されている場合、ルールセットはすぐに有効になります。
ルールセットの分析情報を表示して、ルールが共同作成者にどのように影響しているかを確認できます。 適用ステータスが "評価" に設定されている場合、ルール セットがアクティブであった場合に合格または失敗したアクションを確認できます。 ルールセットの分析情報の詳細については、「リポジトリのルールセットの管理」を参照してください。