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
규칙 세트를 만들거나 편집하는 동안 적용 상태를 사용하여 규칙 세트를을 적용하는 방법을 구성할 수 있습니다.
규칙 세트에 대해 다음 적용 상태 중에서 선택할 수 있습니다.
- 활성: 규칙 세트가 생성 시에 적용됩니다.
- 평가: 규칙 세트가 적용되지 않지만 “규칙 인사이트” 페이지에서 규칙을 위반하거나 위반하지 않는 작업을 모니터링할 수 있습니다.
- 사용 안 함: 규칙 세트가 적용되거나 평가되지 않습니다.
"평가" 모드를 사용하는 것은 규칙 세트를 적용하지 않고 테스트하는 데 유용한 옵션입니다. "규칙 인사이트" 페이지를 사용하여 기여가 규칙을 위반했는지 확인할 수 있습니다. 자세한 내용은 리포지토리에 대한 규칙 세트 관리을(를) 참조하세요.
Creating a branch or tag ruleset
-
GitHub의 오른쪽 위 모서리에서 프로필 사진을 클릭합니다.
-
사용자 환경에 따라 사용자 엔터프라이즈를 클릭하거나 사용자 엔터프라이즈를 클릭한 다음, 보고 싶은 엔터프라이즈를 클릭합니다.
-
페이지 왼쪽의 엔터프라이즈 계정 사이드바에서 정책을 클릭합니다.
-
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 및 감사 로그에서 변경 내용을 명확하게 추적해야 합니다. 그러면 행위자가 분기 보호를 바이패스하고 끌어오기 요청을 병합하도록 선택할 수 있습니다.
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
메타데이터 제한은 리포지토리의 커밋 간의 일관성을 높이기 위한 것입니다. 끌어오기 요청을 통해 코드 검토를 요구하는 등의 보안 조치를 대체하기 위한 것이 아닙니다.
Note
분기를 Squash 병합하는 경우 해당 분기의 모든 커밋이 기본 분기에 대한 메타데이터 요구 사항을 충족해야 합니다.
-
커밋 메타데이터 또는 분기 이름을 제어하는 규칙을 추가하려면 규칙 세트를 생성하거나 편집할 때 "제한" 섹션에서 커밋 메타데이터 제한 또는 분기 이름 제한을 클릭합니다.
-
제한 설정을 구성한 다음 추가를 클릭합니다. 동일한 규칙 세트에 여러 제한을 추가할 수 있습니다.
-
지정된 regex 패턴과 일치하려면 "요구 사항" 드롭다운에서 지정된 regex 패턴과 일치해야 함을 선택합니다.
"일치하는 패턴으로 시작해야 함"과 같은 대부분의 요구 사항에서 입력하는 패턴은 문자 그대로 해석되며 와일드카드는 지원되지 않습니다. 예를 들어
*
문자는 리터럴*
문자만 나타냅니다.더 복잡한 패턴의 경우 "지정된 regex 패턴과 일치해야 함" 또는 "지정된 정규식 패턴과 일치하지 않아야 함"을 선택한 다음 정규식 구문을 사용하여 일치하는 패턴을 정의할 수 있습니다. 자세한 내용은 GitHub Enterprise Cloud 설명서의 커밋 메타데이터에 대한 정규식 정보."
리포지토리에 대한 규칙 세트를 보는 모든 사용자는 여러분이 제공한 설명을 볼 수 있습니다.
-
선택적으로 메타데이터 제한이 있는 규칙 세트를 적용하기 전에 규칙 세트에 대한 "평가" 적용 상태 선택하여 기여자에게 영향을 주지 않으면서 메타데이터 제한의 효과를 테스트할 수 있습니다. 메타데이터 제한에 대한 자세한 내용은 규칙 세트에 사용 가능한 규칙을(를) 참조하세요.
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의 오른쪽 위 모서리에서 프로필 사진을 클릭합니다.
- 사용자 환경에 따라 사용자 엔터프라이즈를 클릭하거나 사용자 엔터프라이즈를 클릭한 다음, 보고 싶은 엔터프라이즈를 클릭합니다.
- 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
규칙 세트 만들기를 마치려면 만들기를 클릭합니다. 규칙 세트의 적용 상태가 "활성"으로 설정된 경우 규칙 세트가 즉시 적용됩니다.
규칙 세트에 대한 인사이트를 보고 규칙이 기여자에게 미치는 영향을 확인할 수 있습니다. 적용 상태가 "평가"로 설정된 경우 규칙 세트가 활성 상태이면 어떤 작업이 통과했거나 실패했는지 확인할 수 있습니다. 규칙 세트의 인사이트에 대한 자세한 내용은 리포지토리에 대한 규칙 세트 관리을(를) 참조하세요.