Skip to main content

Enterprise でルールセットを使ってコード ガバナンスを適用する

Enterprise 内の複数のリポジトリを対象とするルールセットを作成できます。

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

Enterprise owners

はじめに

Note

現在、Enterprise コード ルールセットはパブリック プレビュー段階であり、変更される可能性があります。

ユーザーが Enterprise 全体のリポジトリ内のコードを操作する方法を制御するルールセットを作成できます。 次のことを実行できます。

  • どのユーザーが特定のブランチにコミットをプッシュできるか、コミットをどのようにフォーマットする必要があるか、どのユーザーがタグを削除または名前変更できるかといったことを制御するには、ブランチまたはタグのルールセットを作成します。
  • プライベートまたは内部リポジトリと、リポジトリのフォーク ネットワーク全体へのプッシュを禁止するには、プッシュ ルールセットを作成します。 プッシュ ルールセットを使用すると、ファイル拡張子、ファイル パスの長さ、ファイルとフォルダーのパス、およびファイル サイズに基づいてプッシュをブロックできます。

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

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

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

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

ルールセットが適用される場所の定義方法

ルールセットを使うと、ルールを適用する対象の organization、リポジトリ、ブランチを柔軟に指定できます。

  • organization を対象にするには、すべてを選ぶ、一覧から選ぶ、または fnmatch 構文を使って organization 名の動的パターンを定義することができます。 構文の詳細については、「リポジトリのルールセットの作成」を参照してください。
  • これらの organization 内では、すべてのリポジトリを対象にするか、カスタム プロパティによって動的リストを対象にすることができます。 「組織内リポジトリのカスタム プロパティの管理」を参照してください。
  • リポジトリ内では、特定のブランチまたはタグ (すべてのブランチ、既定のブランチ、または fnmatch 構文を使った動的リスト) を対象にすることができます。

リポジトリ内のブランチを対象とするルールセットを作成すると、リポジトリ管理者は、ブランチの名前を変更したり、対象のリポジトリ内の既定のブランチを変更したりできなくなります。 適切なアクセス許可を持っている場合は、ブランチを作成および削除できます。

コミットの形式を制御する方法

ブランチまたはタグのルールセットでは、コミット メッセージや作成者のメールなどのコミット メタデータの形式を制限するルールを追加できます。

[Must match a given regex pattern restriction] を選ぶと、正規表現構文を使って、メタデータが一致する必要がある、または一致してはならないパターンを定義できます。 構文の詳細と例については、「リポジトリのルールセットの作成」を参照してください。

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

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

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

  • アクティブ: ルールセットは作成時に適用されます。
  • 評価: ルールセットは適用されませんが、[Rule Insights] ページでルールに違反するアクションと違反しないアクションを監視できます。
  • 無効: ルールセットは、適用または評価されません。

「評価」モードを使用することは、ルールセットを適用せずにテストするための優れたオプションです。 「ルールの分析情報」ページを使用して、そのコントリビューションがルールに違反したかどうかを確認できます。 詳しくは、「リポジトリのルールセットの管理」をご覧ください。

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

  1. GitHub の右上隅にあるプロフィール写真をクリックします。

  2. ご自分の環境に応じて、[Your enterprise] または [Your enterprises] をクリックし、表示するエンタープライズをクリックします。

  3. ページの左側にある Enterprise アカウントのサイドバーで、 [ポリシー] をクリックします。

  4. [Policies] で [Code] をクリックします。

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

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

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

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

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

特定のロール、チーム、またはアプリにバイパス アクセス許可を付与することや、ルールセットのバイパス要求を承認することができます。

バイパス アクセスの対象になるものを次に示します。

  • リポジトリ管理者、organization 所有者、Enterprise 所有者
  • メンテナンスまたは書き込みロール、またはキーの配置。
  1. ルールセットにバイパス アクセス許可を付与するには、[Bypass list] セクションで [Add bypass] をクリックします。

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

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

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

Enterprise 内で対象とする organization を選ぶ

すべての organization を選ぶか、既存の organization を選ぶか、名前で動的リストを設定します。 Enterprise Managed Users を使う場合は、Enterprise 内のユーザーが所有するすべてのリポジトリをターゲットにすることも選択できます。

動的リストを設定する場合は、fnmatch 構文を使って 1 つ以上の名前付けパターンを追加します。 たとえば、文字列 *open-source は、名前が open-source で終わる organization と一致します。 構文の詳細については、「リポジトリのルールセットの作成」を参照してください。

Enterprise 内で対象とするリポジトリを選ぶ

選んだ organization 内で、すべてのリポジトリを対象にするか、カスタム プロパティによって動的リストを対象にすることができます。 「組織内リポジトリのカスタム プロパティの管理」を参照してください。

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

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

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

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

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

メタデータの制限追加

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

Note

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

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

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

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

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

    より複雑なパターンの場合は、[特定の正規表現パターンに一致する必要がある] または [特定の正規表現パターンに一致しない] を選び、正規表現構文を使って、一致するパターンを定義できます。 詳細については、「メタデータのコミットに正規表現を使う」を参照してください。

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

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

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

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

ルールセットの分析情報を表示して、ルールが共同作成者にどのように影響しているかを確認できます。 適用ステータスが "評価" に設定されている場合、ルール セットがアクティブであった場合に合格または失敗したアクションを確認できます。 ルールセットの分析情報の詳細については、「リポジトリのルールセットの管理」を参照してください。

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

Note

このルールセットを使うと、リポジトリのフォーク ネットワーク全体にプッシュ制限を適用できます。

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

  1. GitHub の右上隅にあるプロフィール写真をクリックします。
  2. ご自分の環境に応じて、[Your enterprise] または [Your enterprises] をクリックし、表示するエンタープライズをクリックします。
  3. 左側のサイドバーの [Policies] セクションで、[Code] をクリックします。
  4. 新しいルールセット」をクリックします。
  5. [New push ruleset] をクリックします。
  6. [ルールセット名] に、ルールセットの名前を入力します。
  7. 必要に応じて、既定の適用状態を変更するには、[Disabled] をクリックして適用状態を選びます。 適用状態の詳細については、「ルールセットについて」を参照してください。

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

Note

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

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

  • リポジトリ管理者、organization 所有者、Enterprise 所有者
  • メンテナンスまたは書き込みロール、またはキーの配置
  1. ルールセットにバイパス アクセス許可を付与するには、[Bypass list] セクションで [Add bypass] をクリックします。
  2. 表示される [バイパスの追加] モーダル ダイアログで、バイパスアクセス許可を付与するロール、チーム、またはアプリを検索し、[提案] セクションからロール、チーム、またはアプリを選択し、[選択項目の追加] をクリックします。

Enterprise 内で対象とする organization を選ぶ

すべての organization を選ぶか、既存の organization を選ぶか、名前で動的リストを設定します。 Enterprise Managed Users を使う場合は、Enterprise 内のユーザーが所有するすべてのリポジトリをターゲットにすることも選択できます。

動的リストを設定する場合は、fnmatch 構文を使って 1 つ以上の名前付けパターンを追加します。 たとえば、文字列 *open-source は、名前が open-source で終わる organization と一致します。 構文の詳細については、「リポジトリのルールセットの作成」を参照してください。

Enterprise 内で対象とするリポジトリを選ぶ

選んだ organization 内で、すべてのリポジトリを対象にすることや、カスタム プロパティを使って動的リストを対象にすることができます。 「組織内リポジトリのカスタム プロパティの管理」を参照してください。

プッシュ保護の選択

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

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

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

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

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

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

ルールセットの分析情報を表示して、ルールが共同作成者にどのように影響しているかを確認できます。 適用ステータスが "評価" に設定されている場合、ルール セットがアクティブであった場合に合格または失敗したアクションを確認できます。 ルールセットの分析情報の詳細については、「リポジトリのルールセットの管理」を参照してください。