Skip to main content

규칙 문제 해결

리포지토리에 기여할 때 규칙 세트의 문제를 해결하는 방법을 알아봅니다.

누가 이 기능을 사용할 수 있는 있나요?

Rulesets are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see "GitHub’s plans."

Push rulesets are available for the GitHub Enterprise Cloud plan in internal and private repositories, forks of repositories that have push rulesets enabled, and organizations in your enterprise.

규칙 세트 문제 해결

리포지토리에서 작업을 수행할 수 없고 그 이유를 알고 싶은 경우, 작업 중인 분기 또는 태그를 대상으로 하는 활성 규칙 세트를 볼 수 있습니다. 자세한 내용은 "리포지토리에 대한 규칙 세트 관리"을(를) 참조하세요.

활성 상태인 규칙에 따라, 원격 분기에 커밋을 푸시하려면 먼저 커밋 기록을 로컬로 편집해야 할 수 있습니다. 예를 들어 분기에서 커밋에 서명해야 하는 경우 서명 설정을 업데이트한 다음 로컬 분기의 대화형 지정을 사용하여 서명된 커밋으로 Git 기록을 다시 쓸 수 있습니다. 자세한 내용은 "규칙 세트에 사용 가능한 규칙" 및 "명령줄에서 Git 다시 지정 사용"을(를) 참조하세요.

분기 또는 태그가 커밋의 메타데이터를 제한하는 규칙의 대상이 되는 경우 커밋 메타데이터의 일부가 특정 패턴과 일치하지 않으면 커밋이 거부될 수 있습니다. 예를 들어 커밋 메시지 시작 부분에 이슈 번호를 추가하거나 리포지토리에 푸시하려는 새 분기 또는 태그의 이름을 변경해야 할 수 있습니다. 커밋이 거부되면 관련 메타데이터에서 일치해야 하는 패턴을 알려주는 메시지가 표시됩니다. 서명된 커밋과 마찬가지로 다시 지정을 수행하여 커밋을 스쿼시하거나 각 커밋을 개별적으로 다시 써야 할 수 있습니다. 자세한 내용은 "규칙 세트에 사용 가능한 규칙"을(를) 참조하세요.

규칙 세트 워크플로 문제 해결

끌어오기 요청을 통합하기 전에 워크플로를 전달하도록 조직 수준에서 규칙 집합 워크플로를 구성할 수 있습니다. 자세한 내용은 "조직에서 리포지토리에 대한 규칙 집합 만들기"을(를) 참조하세요.

열린 끌어오기 요청에 대한 규칙 세트 워크플로

끌어오기 요청이 열려 있는 동안 규칙을 만들면 필요한 워크플로가 자동으로 실행되지 않습니다. 필요한 워크플로를 트리거하려면 새 커밋을 푸시하거나, 분기를 업데이트하거나, 끌어오기 요청을 닫고 다시 엽니다.

지원되는 규칙 세트 워크플로 이벤트

규칙 집합 워크플로는 pull_request, pull_request_targetmerge_group 이벤트 사용을 지원합니다. 따라서 워크플로가 규칙 집합에서 실행되도록 워크플로의 on: 섹션에서 이러한 이벤트 중 하나 이상을 지정해야 합니다.

지원되는 이벤트에 대해 지정한 필터는 무시됩니다(예: branches, branches-ignore, paths, types 등). 워크플로는 지원되는 이벤트의 기본 활동 유형에 의해서만 항상 트리거됩니다.

이벤트기본 작업 유형
pull_requestopened, synchronize, reopened
pull_request_targetopened, synchronize, reopened
merge_groupchecks_requested

자세한 내용은 "워크플로를 트리거하는 이벤트"을(를) 참조하세요.

규칙 세트 워크플로는 GITHUB_TOKEN에 의해 트리거되는 이벤트에서 실행되지 않습니다. 자세한 내용은 "자동 토큰 인증"을(를) 참조하세요.

리포지토리 만들기 차단

필수 워크플로는 초기화 중인 리포지토리에 대해 실행할 수 없으므로 다른 사람들이 리포지토리를 만들지 못하도록 차단할 수 있습니다. 이를 해결하려면 규칙 세트가 적용 상태를 "평가"해야 하거나 바이패스 권한이 있는 사용자가 리포지토리를 만들고 분기 보호를 바이패스해야 합니다.

적용 상태 및 "평가" 모드에 대한 자세한 내용은 "리포지토리에 대한 규칙 세트 만들기"을 참조하세요.

바이패스 권한에 대한 자세한 내용은 "보호된 분기 정보"을 참조하세요.

규칙 세트의 분기 대상

규칙 세트 워크플로가 리포지토리의 모든 분기를 대상으로 하지 않는지 확인합니다. 분기의 모든 변경 내용이 끌어오기 요청에 의해 수행되는 분기만을 대상으로 해야합니다.

지원되는 디렉터리

워크플로 파일이 .github/workflows 디렉터리에 있는지 확인합니다. 원본 리포지토리가 아닌 리포지토리의 pull_request 이벤트에 대해 규칙 세트 워크플로를 실행하려면 다음 작업 중 원하는 항목을 수행할 수 있습니다.

merge_group 트리거 사용

리포지토리에서 GitHub Actions을(를) 사용하여 필요한 검사 를 수행하거나 리포지토리의 끌어오기 요청에 대한 조직 규칙 세트 을(를) 통해 워크플로가 필요한 경우 merge_group 이벤트를 추가 트리거로 포함하도록 워크플로를 업데이트해야 합니다. 그렇지 않으면 병합 큐에 끌어오기 요청을 추가할 때 상태 검사가 트리거되지 않습니다. 상태 확인 필요가 보고되지 않으므로 병합이 실패합니다. merge_group 이벤트는 pull_requestpush 이벤트트와 별개입니다.

원본 리포지토리 권한

원본 리포지토리 권한이 "ORGANIZATION NAME 조직의 리포지토리에서 액세스할 수 있음"으로 설정되어 있는지 확인합니다.

자세한 내용은 "리포지토리에 대한 GitHub Actions 설정 관리"을(를) 참조하세요.

원본 리포지토리 개인 정보 설정

규칙 세트 워크플로 파일이 실행하려는 리포지토리와 동일하거나 덜 제한적인 개인 정보 설정이 있는 원본 리포지토리에 있는지 확인합니다. 특히, 공용 워크플로는 조직의 리포지토리에서 실행되고, 내부 워크플로는 내부 및 프라이빗 리포지토리에서 실행할 수 있으며, 프라이빗 워크플로는 프라이빗 리포지토리에서 실행할 수 있습니다. 자세한 내용은 "워크플로 정보"을(를) 참조하세요.

새 리포지토리를 만들기 위한 권한

규칙 세트 워크플로가 구성된 경우 새 리포지토리를 만들려면 규칙 세트에 대한 바이패스 권한이 있는지 확인합니다. 자세한 내용은 "리포지토리에 대한 규칙 세트 만들기"을(를) 참조하세요.

규칙 인사이트

GitHub은(는) 끌어오기 요청이 통합되거나 통합이 시도될 때까지 규칙 인사이트를 기록하지 않습니다.

동시성

규칙 세트 워크플로가 cancel-in-progress 동시성 설정을 사용하지 않는지 확인합니다. 동시성에 대한 자세한 내용은 "동시성 사용"을 참조하세요.