Skip to main content

組織内のリポジトリのルールセットを作成する

組織内の複数のリポジトリを対象にしたルールセットを作成できます。

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

Organization owners can create rulesets at the organization level.

はじめに

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

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

フォークは、アップストリーム リポジトリからブランチまたはタグのルールセットを継承しません。 ただし、組織が所有するフォークは、他のリポジトリと同様に、作成するルールセットの対象となります。

フォークは、ルート リポジトリからプッシュ ルールセットを_継承します_。 プッシュ ルールは、リポジトリのフォーク ネットワーク全体に適用され、リポジトリへのすべてのエントリ ポイントが確実に保護されます。 たとえば、プッシュルールセットが有効になっているリポジトリをフォークした場合、フォークされたリポジトリにも同じプッシュルールセットが適用されます。

フォークされたリポジトリの場合、プッシュ ルールのバイパス アクセス許可を持つユーザーは、ルート リポジトリのバイパス アクセス許可を持つユーザーだけです。

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

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 のドキュメントを参照してください。

ルールセット適用状況の利用

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

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

  • Active: ルールセットは作成時に適用されます。
  • Disabled: ルールセットは、適用されません。

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

  1. GitHub の右上隅にあるプロフィール画像をクリックしてから、[ Your organizations] をクリックします。

  2. 組織をクリックして選択します。

  3. Organization 名の下で、[ Settings] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    組織のプロファイルのタブのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で囲まれています。

  4. 左側のサイドバーの [Code, planning, and automation] セクションで、[ Repository] をクリックし、[Rulesets] をクリックします。

    組織の設定ページのスクリーンショット。 サイド バーで、[ルールセット] というラベルの付いたリンクがオレンジ色の枠線で囲まれています。

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

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

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

  8. 必要に応じて、既定の適用状態を変更するには、 [Disabled] をクリックして、新しい適用状態を選びます。

組織内でターゲットにするリポジトリの選択

ルールセットを使用すると、組織内のすべてのリポジトリまたは手動で選択したリポジトリの一覧を対象にすることを選択できます。 名前付け規則展開コンテキスト、 またはカスタム プロパティでフィルター処理することもできます。

カスタム プロパティについて詳しくは、「Organization 内リポジトリのカスタム プロパティの管理」をご覧ください。

リポジトリが組織レベルで作成されたルールセットのターゲットになっている場合は、組織のオーナーのみがそのルールセットを編集できます。 ただし、リポジトリへの管理者アクセス権を持つユーザー、または "リポジトリ ルールの編集" アクセス許可を含むカスタム ロールを持つユーザーは、リポジトリ レベルで追加のルールセットを作成できます。 これらのルールセット内のルールは、組織レベルで定義されたルールと集約されます。 その結果、新しいルールセットを作成すると、ブランチまたはタグを対象とするルールは、より制限が厳しくなりますが、制限が緩くなることはありません。 ルールセットの作成について詳しくは、「ルールセットについて」をご覧ください。

プロパティに基づいて組織内のリポジトリをターゲットにする

カスタム プロパティに基づいて、組織内のリポジトリをターゲットにすることができます。 「Organization 内リポジトリのカスタム プロパティの管理」を参照してください。

  1. プロパティに基づいて organization 内のリポジトリの動的リストをターゲットにするには、[Target repositories] セクションで [Repository targeting criteria] の横にある [Repositories matching a filter] を選びます。
  2. ターゲットを追加するには、フィルター セクションで、クエリを入力する (例: visibility:private props.team:infra -language:java) か、フィルターで選択します。
  3. 表示されるモーダル ダイアログで、ドロップダウン メニューからカスタムまたはシステム プロパティを選んで、各プロパティの値を選びます。
  4.        **[適用]** をクリックします。
    

組織内のすべてのリポジトリをターゲットにする

Organization 内のすべてのリポジトリをターゲットにするには、[Target repositories] セクションで [Repository targeting criteria] の横にある [All repositories] を選びます。

組織内のリポジトリを選択してターゲットにする

  1. Organization 内の手動で選んだリポジトリの静的なリストをターゲットにするには、[Target repositories] セクションで [Repository targeting criteria] の横にある [Only selected repositories] を選びます。
  2. ターゲットにするリポジトリを選択するには、[ターゲット条件] セクションで [リポジトリの選択] を選択し、ターゲットにする各リポジトリの名前を検索します。 検索結果から各リポジトリを選びます。

組織内の名前付け規則によるリポジトリのターゲット設定

  1. 組織内のリポジトリを名前付け規則に基づいた動的リストとしてターゲットするには、[Target repositories] セクションの [Repository targeting criteria] の横にある [Repositories matching a name] を選択します。

  2. ターゲット パターンの定義を開始するには、[ターゲット条件] セクションで[ターゲットの追加]を選択し、[パターン別に含める] または [パターンで除外] をクリックします。

  3. 表示されるモーダル ダイアログで、fnmatch 構文を使ってリポジトリの名前付けパターンを入力し、 [包含パターンの追加] または [除外パターンの追加] をクリックします。 fnmatch の構文について詳しくは、「fnmatch 構文の使用」をご覧ください。

    メモ

    複数のターゲット条件を同じルールセットに追加できます。 たとえば、パターン *cat* に一致するリポジトリを含め、さらにパターン not-a-cat に一致するリポジトリを明示的に除外できます。

  4. 必要に応じて、ルールセットの構成ページで [ターゲット リポジトリの名前変更を禁止する] を選びます。

デプロイ コンテキストによるリポジトリのターゲット設定

組織が linked artifacts pageにレコードを追加している場合は、 デプロイ可能な リポジトリ (アクティブなストレージ レコードを持つ) または デプロイされている (アクティブなデプロイ レコードを持つ) リポジトリをターゲットにすることができます。 「リンクされた成果物について」を参照してください。

  1. [ターゲット リポジトリ] セクションで、[リポジトリのターゲット条件] の横にある フィルターに一致するリポジトリを選択します
  2. [フィルターに一致するリポジトリ] の横にある アイコンをクリックします。
  3.        `deployed:true`フィルターまたは`deployable:true` フィルターを使用して、リポジトリをターゲットにします。
    
  4.        **[適用]** をクリックします。
    

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

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

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

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

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

メモ

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

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

ブランチまたはタグのルールセットの最終化と次のステップ

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

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

メモ

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

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

  1. GitHub の右上隅にあるプロフィール画像をクリックしてから、[ Your organizations] をクリックします。

  2. 組織をクリックして選択します。

  3. Organization 名の下で、[ Settings] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    組織のプロファイルのタブのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で囲まれています。

  4. 左側のサイドバーの [Code, planning, and automation] セクションで、[ Repository] をクリックし、[Rulesets] をクリックします。

    組織の設定ページのスクリーンショット。 サイド バーで、[ルールセット] というラベルの付いたリンクがオレンジ色の枠線で囲まれています。

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

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

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

  8. 必要に応じて、既定の適用状態を変更するには、 [Disabled] をクリックして、新しい適用状態を選びます。

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

メモ

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

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

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

組織内でターゲットにするリポジトリの選択

ルールセットを使用すると、組織内のすべてのリポジトリまたは手動で選択したリポジトリの一覧を対象にすることを選択できます。 名前付け規則展開コンテキスト、 またはカスタム プロパティでフィルター処理することもできます。

カスタム プロパティについて詳しくは、「Organization 内リポジトリのカスタム プロパティの管理」をご覧ください。

リポジトリが組織レベルで作成されたルールセットのターゲットになっている場合は、組織のオーナーのみがそのルールセットを編集できます。 ただし、リポジトリへの管理者アクセス権を持つユーザー、または "リポジトリ ルールの編集" アクセス許可を含むカスタム ロールを持つユーザーは、リポジトリ レベルで追加のルールセットを作成できます。 これらのルールセット内のルールは、組織レベルで定義されたルールと集約されます。 その結果、新しいルールセットを作成すると、ブランチまたはタグを対象とするルールは、より制限が厳しくなりますが、制限が緩くなることはありません。 ルールセットの作成について詳しくは、「ルールセットについて」をご覧ください。

プロパティに基づいて組織内のリポジトリをターゲットにする

カスタム プロパティに基づいて、組織内のリポジトリをターゲットにすることができます。 「Organization 内リポジトリのカスタム プロパティの管理」を参照してください。

  1. プロパティに基づいて organization 内のリポジトリの動的リストをターゲットにするには、[Target repositories] セクションで [Repository targeting criteria] の横にある [Repositories matching a filter] を選びます。
  2. ターゲットを追加するには、フィルター セクションで、クエリを入力する (例: visibility:private props.team:infra -language:java) か、フィルターで選択します。
  3. 表示されるモーダル ダイアログで、ドロップダウン メニューからカスタムまたはシステム プロパティを選んで、各プロパティの値を選びます。
  4.        **[適用]** をクリックします。
    

組織内のすべてのリポジトリをターゲットにする

Organization 内のすべてのリポジトリをターゲットにするには、[Target repositories] セクションで [Repository targeting criteria] の横にある [All repositories] を選びます。

組織内のリポジトリを選択してターゲットにする

  1. Organization 内の手動で選んだリポジトリの静的なリストをターゲットにするには、[Target repositories] セクションで [Repository targeting criteria] の横にある [Only selected repositories] を選びます。
  2. ターゲットにするリポジトリを選択するには、[ターゲット条件] セクションで [リポジトリの選択] を選択し、ターゲットにする各リポジトリの名前を検索します。 検索結果から各リポジトリを選びます。

組織内の名前付け規則によるリポジトリのターゲット設定

  1. 組織内のリポジトリを名前付け規則に基づいた動的リストとしてターゲットするには、[Target repositories] セクションの [Repository targeting criteria] の横にある [Repositories matching a name] を選択します。

  2. ターゲット パターンの定義を開始するには、[ターゲット条件] セクションで[ターゲットの追加]を選択し、[パターン別に含める] または [パターンで除外] をクリックします。

  3. 表示されるモーダル ダイアログで、fnmatch 構文を使ってリポジトリの名前付けパターンを入力し、 [包含パターンの追加] または [除外パターンの追加] をクリックします。 fnmatch の構文について詳しくは、「fnmatch 構文の使用」をご覧ください。

    メモ

    複数のターゲット条件を同じルールセットに追加できます。 たとえば、パターン *cat* に一致するリポジトリを含め、さらにパターン not-a-cat に一致するリポジトリを明示的に除外できます。

  4. 必要に応じて、ルールセットの構成ページで [ターゲット リポジトリの名前変更を禁止する] を選びます。

デプロイ コンテキストによるリポジトリのターゲット設定

組織が linked artifacts pageにレコードを追加している場合は、 デプロイ可能な リポジトリ (アクティブなストレージ レコードを持つ) または デプロイされている (アクティブなデプロイ レコードを持つ) リポジトリをターゲットにすることができます。 「リンクされた成果物について」を参照してください。

  1. [ターゲット リポジトリ] セクションで、[リポジトリのターゲット条件] の横にある フィルターに一致するリポジトリを選択します
  2. [フィルターに一致するリポジトリ] の横にある アイコンをクリックします。
  3.        `deployed:true`フィルターまたは`deployable:true` フィルターを使用して、リポジトリをターゲットにします。
    
  4.        **[適用]** をクリックします。
    

プッシュ保護の選択

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

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

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

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

プッシュルールセットの確定と次のプロセス

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