Skip to main content

リポジトリのルールセットの作成

リポジトリにルールセットを追加して、ユーザーが特定のブランチやタグを操作する方法を制御できます。

この機能を使用できるユーザーについて

リポジトリのルールセットは、そのリポジトリの読み取りアクセス権を持つすべてのユーザーが表示できます。 リポジトリの管理者アクセス権を持つユーザー、または "リポジトリ ルールの編集" アクセス許可を持つカスタム ロールは、リポジトリのルールセットを作成、編集、削除したり、

ルールセットは、GitHub Free と GitHub Free の Organization のパブリック リポジトリ、GitHub Pro、GitHub Team、GitHub Enterprise Cloud のパブリックとプライベートのリポジトリで利用できます。 詳しくは、「GitHub のプラン」をご覧ください。

プッシュ ルールセットは、内部リポジトリとプライベート リポジトリの GitHub Team プランと、プッシュ ルールセットが有効になっているリポジトリのフォークで使用できます。

はじめに

ルールセットを作成して、ユーザーがリポジトリ内で選んだブランチとタグを操作する方法を制御できます。 どのユーザーが特定のブランチにコミットをプッシュできるか、コミットをどのようにフォーマットする必要があるか、どのユーザーがタグを削除または名前変更できるかといったことを制御できます。 また、ユーザーがリポジトリの名前を変更できないようにすることもできます。

また、プライベートまたは内部リポジトリ、およびリポジトリのフォーク ネットワーク全体へのプッシュをブロックするように、プッシュ ルールセットを作成することもできます。 プッシュ ルールセットを使用すると、ファイル拡張子、ファイル パスの長さ、ファイルとフォルダーのパス、およびファイル サイズに基づいてプッシュをブロックできます。

ルールセットを作成するときに、特定のユーザーがルールセットの中のルールをバイパスすることを許可できます。

このルールセットについて詳しくは、「ルールセットについて」をご覧ください。

事前構築済みのルールセットのインポート

GitHub によって事前構築済みのルールセットの 1 つをインポートするには、「github/ruleset-recipes」を参照してください 。

JSON ファイルを使用して、別のリポジトリまたは組織からルールセットをインポートできます。 これは、複数のリポジトリまたは組織に同じルールセットを適用する場合に便利です。 詳細については、「組織内のリポジトリのルールセットを管理する」を参照してください。

fnmatch 構文の使用

fnmatch 構文を使用 して、ルールセットの作成時にターゲットとするパターンを定義できます。

* ワイルドカードを使って、任意の文字列に一致させることができます。 GitHub では File::FNM_PATHNAME フラグを File.fnmatch 構文で使うため、* のワイルドカードがディレクトリの区切り記号 (/) と照合されません。 たとえば、qa/* は、qa/ で始まり、1 つのスラッシュを含むすべてのブランチと照合されますが、qa/foo/bar とは照合されません。 qa の後には、qa/**/* を使用して任意の数のスラッシュを含めることができます。これは、たとえば qa/foo/bar/foobar/hello-world と一致します。 qa**/**/* を使い qa の文字列を拡張して、より包括的にすることもできます。

構文のオプションについて詳しくは、fnmatch のドキュメントを参照してください。

サポートされていない fnmatch 構文

fnmatch 構文のすべての式が、ブランチ保護規則でサポートされているわけではありません。 次の制約に注意してください。

  • GitHub はブランチ保護規則でバックスラッシュの使用をサポートしていないため、バックスラッシュ (\) 文字を引用文字として使用することはできません。
  • 角かっこ ([]) 内で文字セットを指定できますが、現在、^ 演算子 (例: [^charset]) でセットを補完することはできません。
  • GitHub は fnmatch 構文の File::FNM_PATHNAME をサポートしていますが、File::FNM_EXTGLOB はサポートされていません。

ルールセットの適用ステータスの使用

ルールセットの作成または編集中に、適用ステータスを使用してルールセットの適用方法を構成できます。

ルールセットには、次の適用ステータスのいずれかを選択できます。

  • アクティブ: ルールセットは作成時に適用されます。
  • 無効: ルールセットは、適用されません。

分岐またはタグルールセットの作成

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [設定] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。

  3. 左側のサイド バーの [コードと自動化] の下で、 [ルール] をクリックし、 [ルールセット] をクリックします。

    リポジトリの [設定] ページのサイド バーのスクリーンショット。 [ルール] サブメニューが展開され、[ルールセット] オプションの枠線がオレンジ色で表示されています。

  4. 新しいルールセット」をクリックします。

  5. ブランチを対象とするルールセットを作成するには、 [新しいブランチ ルールセット] をクリックします。

  6. または、タグを対象とするルールセットを作成するには、[新しいタグ ルールセット] をクリックします。

  7. [ルールセット名] に、ルールセットの名前を入力します。

  8. 必要に応じて、既定の適用ステータスを変更するには、 [無効] をクリックし、新しい適用ステータスを選択します。 適用ステータスの詳しい情報については、「ルールセットについて」を参照してください。

ブランチまたはタグのルールセットに対するバイパス アクセス許可の付与

ルールセットに対し、特定のロール、チーム、またはアプリのバイパス アクセス許可を付与できます。 バイパス アクセスの対象になるものを次に示します。

  • リポジトリ管理者、organization 所有者、Enterprise 所有者
  • 保守ロール、書き込みロール、または書き込みロールに基づくカスタム リポジトリ ロール
  • チーム
  • GitHub Apps
  • Dependabot。 Dependabot について詳しくは、「Dependabot クイックスタート ガイド」をご覧ください。"
  1. ルールセットのバイパスのアクセス許可を付与するには、[バイパス リスト] セクションで [バイパスの追加] をクリックします。

  2. 表示される [バイパスの追加] モーダル ダイアログで、バイパスアクセス許可を付与するロール、チーム、またはアプリを検索し、[提案] セクションからロール、チーム、またはアプリを選択し、[選択項目の追加] をクリックします。

  3. 必要に応じて、リポジトリに直接プッシュすることを許可せずにアクターにバイパスを許可するには、[常に許可] の右側にある をクリックし、次に [pull request のみ] をクリックします。

    選択したアクターは、リポジトリに変更を加えるために pull request を開いて、pull request と監査ログに変更の明確な証跡を作成する必要があります。 アクターは、ブランチの保護をバイパスして、その pull request をマージすることを選択できます。

ターゲットにするブランチまたはタグの選択

ブランチまたはタグをターゲットにするには、[ターゲット ブランチ] または [ターゲット タグ] セクションで、[ターゲットの追加] を選び、ブランチまたはタグを含めるまたは除外する方法を選びます。 fnmatch 構文を使って、パターンに基づいてブランチまたはタグを含めたり除外したりできます。 詳しくは、fnmatch 構文の使用に関するページを参照してください。

複数のターゲット条件を同じルールセットに追加できます。 たとえば、既定のブランチを含め、*feature* のパターンに一致するブランチを含めてから、not-a-feature のパターンに一致する特定のブランチを除外することができます。

ブランチまたはタグの保護の選択

[ブランチ保護] または [タグ保護] セクションで、ルールセットに含めるルールを選びます。 ルールを選ぶと、そのルールに追加設定を入力できる場合があります。 このルールについて詳しくは、「ルールセットで使用できるルール」をご覧ください。

Note

[Additional settings] セクションで [Require status checks before merging] をオンにする場合:

  • 必須にする各状態チェックの名前を入力できます。 要件としての状態チェックの追加を完了するには、 をクリックする必要があります。
  • [マージする前にブランチを最新にする必要がある] をオンにする場合は、保護を有効にするためのチェックを定義する必要があります。

メタデータの制限追加

メタデータの制限は、リポジトリでのコミット間の整合性の向上を目的とする必要があります。 pull request でのコード レビュー必須化などのセキュリティ対策を置き換えることを意図したものではありません。

Note

ブランチをスカッシュ マージする場合、そのブランチに対するすべてのコミットは、ベース ブランチのメタデータ要件を満たす必要があります。

  1. コミット メタデータまたはブランチ名を制御するルールを追加するには、ルールセットを作成または編集するときに [Restrictions] セクションで、[Restrict commit metadata] または [Restrict branch names] をクリックします。

  2. 制限の設定を構成して、[追加] をクリックします。 同じルールセットに複数の制限を追加できます。

  3. 特定の正規表現パターンと一致させるには、[要件] ドロップダウンで [特定の正規表現パターンに一致する必要がある] を選択します。

    [一致するパターンで開始する必要がある] など、ほとんどの要件では、入力したパターンはリテラルに解釈され、ワイルドカードはサポートされません。 たとえば、* 文字が表すのは、リテラルな * 文字のみです。

    より複雑なパターンの場合は、[特定の正規表現パターンに一致する必要がある] または [特定の正規表現パターンに一致しない] を選び、正規表現構文を使って、一致するパターンを定義できます。 詳しくは、GitHub Enterprise Cloud ドキュメントの

    リポジトリのルールセットを表示しているすべてのユーザーは、指定した説明を表示できます。

  4. 必要に応じて、メタデータ制限を含むルールセットを適用する前に、ルールセットに対して "評価" の適用状態を選択し、共同作成者に影響を与えることなくメタデータ制限の効果をテストします。 メタデータの制限について詳しくは、「ルールセットで使用できるルール」をご覧ください。

ブランチまたはタグのルール セットの最終処理と次の手順

ルールセットの作成を完了するには、[作成] をクリックします。 ルールセットの適用ステータスが "アクティブ" に設定されている場合、ルールセットはすぐに有効になります。

プッシュ ルールセットの作成

Note

このルールセットでは、このリポジトリのフォーク ネットワーク全体にプッシュ制限が適用されます。

プライベートリポジトリまたは内部リポジトリのプッシュ ルールセットを作成できます。

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [設定] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。

  3. 左側のサイド バーの [コードと自動化] の下で、 [ルール] をクリックし、 [ルールセット] をクリックします。

    リポジトリの [設定] ページのサイド バーのスクリーンショット。 [ルール] サブメニューが展開され、[ルールセット] オプションの枠線がオレンジ色で表示されています。

  4. 新しいルールセット」をクリックします。

  5. ブランチを対象とするルールセットを作成するには、 [新しいプッシュ ルールセット] をクリックします。

  6. [ルールセット名] に、ルールセットの名前を入力します。

  7. 必要に応じて、既定の適用ステータスを変更するには、 [無効] をクリックし、新しい適用ステータスを選択します。 適用ステータスの詳しい情報については、「ルールセットについて」を参照してください。

プッシュ ルールセットに対するバイパス アクセス許可の付与

Note

このリポジトリ内のプッシュ ルールセットのバイパスアクセス許可は、このリポジトリのフォーク ネットワーク全体によって継承されます。 つまり、このリポジトリのフォーク ネットワーク全体のリポジトリでこのルールセットをバイパスできる唯一のユーザーが、ルート リポジトリでこのルールセットをバイパスできるユーザーです。

ルールセットに対し、特定のロール、チーム、またはアプリのバイパス アクセス許可を付与できます。 バイパス アクセスの対象になるものを次に示します。

  • リポジトリ管理者、organization 所有者、Enterprise 所有者
  • 保守ロール、書き込みロール、または書き込みロールに基づくカスタム リポジトリ ロール
  • チーム
  • GitHub Apps
  • Dependabot。 Dependabot について詳しくは、「Dependabot クイックスタート ガイド」をご覧ください。"
  1. ルールセットのバイパスのアクセス許可を付与するには、[バイパス リスト] セクションで [バイパスの追加] をクリックします。
  2. 表示される [バイパスの追加] モーダル ダイアログで、バイパスアクセス許可を付与するロール、チーム、またはアプリを検索し、[提案] セクションからロール、チーム、またはアプリを選択し、[選択項目の追加] をクリックします。

プッシュ保護の選択

ファイル拡張子、ファイル パスの長さ、ファイルとフォルダーのパス、ファイル サイズに基づいて、このリポジトリとこのリポジトリのフォーク ネットワーク全体へのプッシュをブロックできます。

構成したプッシュ保護によって、このリポジトリ内およびこのリポジトリのフォーク ネットワーク全体のプッシュがブロックされます。

  1. [プッシュ保護] で、適用する制限をクリックします。 次に、選択した制限の詳細を入力します。

    ファイル パスの制限については、部分パスまたは完全パスを使用できます。 これには fnmatch の構文を使用できます。 たとえば、test/demo/**/* を対象とする制限により、test/demo/ ディレクトリ内のファイルまたはフォルダーへのプッシュが禁止されます。 test/docs/pushrules.md を対象とした制限により、test/docs/ ディレクトリ内の pushrules.md ファイルへのプッシュが禁止されます。 詳しくは、「リポジトリのルールセットの作成」を参照してください。

プッシュ ルール セットの最終処理と次の手順

ルールセットの作成を完了するには、[作成] をクリックします。 ルールセットの適用ステータスが "アクティブ" に設定されている場合、ルールセットはすぐに有効になります。