InfoGrab DocsInfoGrab Docs

푸시 규칙 개발 가이드라인

GitLab 푸시 규칙 기능의 코드 설계, 비즈니스 로직, 엔트리포인트 및 실행 흐름을 설명합니다.

이 문서는 컨트리뷰터가 푸시 규칙 의 코드 설계를 이해할 수 있도록 작성되었습니다. 이 기능의 코드를 수정하기 전에 이 문서를 먼저 읽어보세요. 이 문서는 코드가 자주 변경될 수 있으므로 코드 설계의 개요만 다루는 것을 원칙으로 합니다. 기능의 특정 부분이 어떻게 동작하는지 이해하려면 코드와 스펙을 직접 확인하세요. 여기에서는 푸시 규칙 기능의 주요 구성 요소가 어떻게 동작하는지 설명합니다. 이 문서는 참조하는 코드베이스 부분이 업데이트·제거되거나 새로운 부분이 추가될 때 함께 업데이트되어야 합니다. 비즈니스 로직 # 비즈니스 로직은 두 곳에 주로 담겨 있습니다. PushRule 모델은 규칙에 대한 설정을 저장하며, 해당 설정을 사용하여 푸시 동작을 변경하는 검사 로직이 별도로 존재합니다. PushRule : 각 푸시 규칙의 구성을 저장하는 데 사용되는 주요 모델입니다. ee/app/models/push_rule.rb 에 정의되어 있습니다. EE::Gitlab::Checks::DiffCheck : Diff 검사는 푸시 규칙의 file_name_regex 에 일치하는 파일 이름과, id_rsa 와 같이 알려진 시크릿 파일 이름에 해당하는 파일의 푸시를 차단합니다. ee/lib/ee/gitlab/checks/diff_check.rb 에 정의되어 있습니다. EE::Gitlab::Checks::PushRuleCheck : 다양한 푸시 규칙 검사를 실행합니다. ee/lib/ee/gitlab/checks/push_rule_check.rb 에 정의되어 있습니다. EE::Gitlab::Checks::PushRules::BranchCheck : 브랜치 규칙과 관련된 푸시 규칙 검사를 실행합니다. ee/lib/ee/gitlab/checks/push_rules/branch_check.rb 에 정의되어 있습니다. EE::Gitlab::Checks::PushRules::CommitCheck : 커밋 규칙과 관련된 푸시 규칙 검사를 실행합니다. ee/lib/ee/gitlab/checks/push_rules/commit_check.rb 에 정의되어 있습니다. EE::Gitlab::Checks::FileSizeLimtCheck : 파일 크기 규칙과 관련된 푸시 규칙 검사를 실행합니다. ee/lib/ee/gitlab/checks/file_size_limit_check.rb 에 정의되어 있습니다. EE::Gitlab::Checks::PushRules::TagCheck : 태그 규칙과 관련된 푸시 규칙 검사를 실행합니다. ee/lib/ee/gitlab/checks/push_rules/tag_check.rb 에 정의되어 있습니다. 엔트리포인트 # 다음 컨트롤러와 API는 모두 푸시 규칙 로직으로 진입하는 엔트리포인트입니다: Admin::PushRulesController : 전역 푸시 규칙을 관리하는 데 사용되는 컨트롤러입니다. Group::PushRulesController : 그룹 수준 푸시 규칙을 관리하는 데 사용되는 컨트롤러입니다. Project::PushRules