Your developer_v2 branch isn't protected: PR(Pull Request) ์‹œ, ๋ธŒ๋žœ์น˜ ๋ณดํ˜ธํ•˜๊ธฐ

2025. 2. 5. 10:08ใ†Github

728x90

 

default ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ , ๊นƒํ—ˆ๋ธŒ ํ™•์ธํ•ด๋ณด๋‹ˆ 'Your developer_v2 branch isn't protected' ์ด๋Ÿฐ ๊ฒฝ๊ณ ์ฐฝ์ด ๋–ด๋‹ค. 

 

๐Ÿ’ก ๋ฉ”์‹œ์ง€ ๋œจ๋Š” ์›์ธ 

์ด๊ฒŒ ๋ญ”๊ฐ€ ํ•˜๊ณ  ๋ดค๋”๋‹ˆ developer_v2 ๋ธŒ๋žœ์น˜๊ฐ€ ๊ฐ•์ œ ํ‘ธ์‹œ๋‚˜ ์ง์ ‘ ํ‘ธ์‹œ ๋“ฑ์ด ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ, ๋ณดํ˜ธ๋˜์ง€ ์•Š๋Š” ์ƒํƒœ๋ผ๋Š” ๋œป์ด๋‹ค. 

์ด ๋ฉ”์‹œ์ง€๋Š” ์ฃผ๋กœ ๊นƒํ—ˆ๋ธŒ์—์„œ PR(Pull Request) ๋จธ์ง€ํ•  ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฉ”์‹œ์ง€๋กœ ๊นƒํ—ˆ๋ธŒ์—์„œ protected branch ์„ค์ •์„ ํ•˜๋ฉด PR๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ฝ”๋“œ๊ฐ€ ๋ณ‘ํ•ฉ๋˜๊ณ , ์ง์ ‘ ํ‘ธ์‹œ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค. 

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Protect this branch ์„ค์ •ํ•ด๋ณด๊ธฐ 

1. GitHub ์ €์žฅ์†Œ(Repository)๋กœ ์ด๋™
2. Settings → Branches ์„ ํƒ
3. "Branch protection rules"์—์„œ "Add branch protection rule" ํด๋ฆญ

 

- Ruleset Name : ์ ์šฉํ•  Ruleset Name ์„ค์ • 

- Enforcement status : Active (๋ธŒ๋žœ์น˜์— ๊ทœ์น™ ๋ฐ”๋กœ ์ ์šฉ๋จ) 

 

- Bypass list : ์ด ๊ทœ์น™์—์„œ ์˜ˆ์™ธํ•ด์•ผ ํ•˜๋Š” ๋ชฉ๋ก์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ 

 

- Targets : ๊ทœ์น™์„ ์ ์šฉํ•  ๋ชฉ๋ก์„ ์„ค์ •ํ•˜๋Š” ๊ณณ์œผ๋กœ, ๋Œ€์ƒ์€ ์ €์žฅ์†Œ๋‚˜ ๋ธŒ๋žœ์น˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ 

(์šฐ์„  ๋‚˜๋Š” Default ๋ธŒ๋žœ์น˜๋งŒ ์ ์šฉํ•˜๋„๋ก ํ•จ) 

 

- Rules : ๋ธŒ๋žœ์น˜์— ๊ทœ์น™์„ ์ง€์ •ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. 

 

Restrict creations
: ํŠน์ • ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด ์ฐธ์กฐ(refs)๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•จ 
-> ํ•ด๋‹น ๋ธŒ๋žœ์น˜์— ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด "bypass permission"์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋งŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค

 

Restrict updates
: ํŠน์ • ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ์ œํ•œํ•จ
-> "bypass permission"์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋งŒ ํ•ด๋‹น ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ(push) ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ 

 

Restrict deletions โœ…
: ํŠน์ • ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•จ 
-> "bypass permission"์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋งŒ ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ

 

Require linear history
: ๋ณ‘ํ•ฉ ์ปค๋ฐ‹(merge commit)์„ ๋ฐฉ์ง€ํ•˜๊ณ , ๋ธŒ๋žœ์น˜์˜ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์„ ํ˜•(linear)์œผ๋กœ ์œ ์ง€ํ•จ 
-> ๋ณ‘ํ•ฉ ์‹œ "squash" ๋˜๋Š” "rebase" ์ „๋žต๋งŒ ํ—ˆ์šฉ๋˜๋ฉฐ, ๋ณต์žกํ•œ ํžˆ์Šคํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ฐฉ์ง€

 

Require deployments to succeed
: ํŠน์ • ํ™˜๊ฒฝ์— ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐฐํฌ(deploy)๋œ ํ›„์—๋งŒ ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ๊ฐ€ ๊ฐ€๋Šฅํ•จ 
-> ์•ˆ์ •์ ์ธ ๋ฐฐํฌ ์ƒํƒœ๋ฅผ ๋ณด์žฅํ•˜๊ณ , ๋ฐฐํฌ ์‹คํŒจ ์‹œ ์ฝ”๋“œ ๋ณ€๊ฒฝ์„ ์ฐจ๋‹จํ•จ 


Require signed commits
: ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ํ‘ธ์‹œ๋˜๋Š” ์ปค๋ฐ‹์€ ๋ฐ˜๋“œ์‹œ ์„œ๋ช…์ด ๊ฒ€์ฆ๋œ ์ƒํƒœ์—ฌ์•ผ ํ•จ. 
-> GPG ํ‚ค ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋ฐ‹์˜ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ, ๋ฌด๋‹จ ๋ณ€๊ฒฝ์„ ๋ฐฉ์ง€ํ•จ. 


Require a pull request before merging โœ…
: ๋ชจ๋“  ์ปค๋ฐ‹์€ ๋ณ„๋„์˜ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์„ฑ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ํ’€ ๋ฆฌํ€˜์ŠคํŠธ(Pull Request)๋ฅผ ํ†ตํ•ด ๋ณ‘ํ•ฉ๋˜์–ด์•ผ ํ•จ.
-> ์ง์ ‘ ํ‘ธ์‹œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ๊ฐ•์ œํ•˜์—ฌ ํ’ˆ์งˆ ๊ด€๋ฆฌ๋ฅผ ๊ฐ•ํ™”ํ•จ 


Require status checks to pass
: ํŠน์ • ์ƒํƒœ ํ™•์ธ(Status Check)์ด ํ†ต๊ณผ๋œ ํ›„์—๋งŒ ๋ธŒ๋žœ์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Œ. 
-> CI/CD ํ…Œ์ŠคํŠธ๋‚˜ ๋นŒ๋“œ ๊ฒ€์ฆ์ด ์™„๋ฃŒ๋œ ๊ฒฝ์šฐ์—๋งŒ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋จ. 


Block force pushes โœ…
: ๊ฐ•์ œ ํ‘ธ์‹œ(force push)๋ฅผ ๊ธˆ์ง€ํ•จ. 
-> ๊ธฐ์กด ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ๋ฎ์–ด์”Œ์›Œ์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์†์‹ค ์œ„ํ—˜์„ ์ค„์ž„ 

 

Require code scanning results
: ์ฝ”๋“œ ์Šค์บ๋‹ ๋„๊ตฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ํ™•์ธ๋œ ํ›„์—๋งŒ ๋ธŒ๋žœ์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Œ 
-> ์ฝ”๋“œ ํ’ˆ์งˆ ๋ฐ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์‚ฌ์ „์— ํƒ์ง€ํ•˜์—ฌ ์•ˆ์ •์„ฑ์„ ๋†’์ž„. 

 

 

์ ์šฉํ•  Rule ๋“ค์„ ์„ ํƒํ•œ ๋‹ค์Œ create ํ•˜๋ฉด ์ด๋ ‡๊ฒŒ Rule ์ด์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

728x90