Dev_TIMI

์Šค๋‚ต๊นƒ ๐Ÿช - ํ˜‘์—…ํŽธ #2: PR ์ƒ์„ฑ ์‹œ ๋ฆฌ๋ทฐ์–ด ์ž๋™ ์ง€์ •ํ•˜๋Š” ๋ฒ• (CODEOWNERS ํ™œ์šฉ)

by its_TIMI

๐Ÿ”น GitHub PR ์ƒ์„ฑ ์‹œ ๋ฆฌ๋ทฐ์–ด ์ž๋™ ์ง€์ •ํ•˜๋Š” ๋ฒ• ๐Ÿš€


1๏ธโƒฃ ๋งค๋ฒˆ ๋ฆฌ๋ทฐ์–ด๋ฅผ ์ง์ ‘ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋ฒˆ๊ฑฐ๋กญ๋‹ค๋ฉด?

GitHub์—์„œ PR์„ ์ƒ์„ฑํ•  ๋•Œ ๋งค๋ฒˆ ๋ฆฌ๋ทฐ์–ด๋ฅผ ์ง์ ‘ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ท€์ฐฎ๊ฑฐ๋‚˜ ๊นŒ๋จน๋Š”๋‹ค๋ฉด

CODEOWNERS ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๋ฆฌ๋ทฐ์–ด๋ฅผ ์ž๋™์œผ๋กœ ๋ฐฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

“๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ํŒŒ์ผ์— ๋Œ€ํ•ด ์ž๋™์œผ๋กœ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์„๊นŒ?”

“๋งค๋ฒˆ ์ˆ˜๋™์œผ๋กœ ๋ฆฌ๋ทฐ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ณผ์ •์ด ๋ฒˆ๊ฑฐ๋กœ์šด๋ฐ, ์ž๋™ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ?”

 

โœ… ๊ทธ ํ•ด๋‹ต์ด ๋ฐ”๋กœ GitHub์˜ CODEOWNERS ๊ธฐ๋Šฅ์ด๋‹ค.

 

์ด ๊ธ€์—์„œ๋Š” CODEOWNERS ํŒŒ์ผ์„ ์„ค์ •ํ•˜์—ฌ PR ์ƒ์„ฑ ์‹œ ๋ฆฌ๋ทฐ์–ด๋ฅผ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•œ๋‹ค.


2๏ธโƒฃ CODEOWNERS๋ž€?

 

GitHub์˜ CODEOWNERS ํŒŒ์ผ์€ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ๋‚˜ ํŒŒ์ผ์— ๋Œ€ํ•ด

PR์ด ์ƒ์„ฑ๋  ๋•Œ ์ž๋™์œผ๋กœ ๋ฆฌ๋ทฐ์–ด๋ฅผ ๋ฐฐ์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

์ฆ‰, “์ด ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์ž๋™์œผ๋กœ ์ด ์‚ฌ๋žŒ์—๊ฒŒ ๋ฆฌ๋ทฐ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค!” ๋ผ๊ณ  ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

โœ… ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•˜๋‹ค.

backend/ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฐฑ์—”๋“œ ํŒ€์ด ์ž๋™์œผ๋กœ ๋ฆฌ๋ทฐ ์š”์ฒญ์„ ๋ฐ›์Œ

frontend/ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ํŒ€์—๊ฒŒ ๋ฆฌ๋ทฐ ์š”์ฒญ์ด ๊ฐ€๋„๋ก ์„ค์ •

config/ ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜๋ฉด DevOps ๋‹ด๋‹น์ž์—๊ฒŒ ์ž๋™ ํ• ๋‹น

README.md ํŒŒ์ผ์ด ์ˆ˜์ •๋˜๋ฉด ๋ฌธ์„œ ๋‹ด๋‹น์ž์—๊ฒŒ ์ž๋™ ๋ฆฌ๋ทฐ ์š”์ฒญ

 

์ฆ‰, ํŒ€ ํ˜‘์—…์„ ์ง„ํ–‰ํ•  ๋•Œ ํŠน์ • ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋‹ด๋‹น์ž๋ฅผ ๋ฏธ๋ฆฌ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

 

์ด์ œ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.

 


3๏ธโƒฃ CODEOWNERS ์„ค์ • ๋ฐฉ๋ฒ•

(1) CODEOWNERS ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ

CODEOWNERS ํŒŒ์ผ์€ ํ”„๋กœ์ ํŠธ์˜ .github/ ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค.

mkdir -p .github
touch .github/CODEOWNERS

โœ… ๊ธฐ์กด์— .github ํด๋”๊ฐ€ ์žˆ๋‹ค๋ฉด ์ƒ๋žตํ•˜๊ณ  ํŒŒ์ผ๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.


(2) CODEOWNERS ํŒŒ์ผ ์ž‘์„ฑํ•˜๊ธฐ

์ด์ œ CODEOWNERS ํŒŒ์ผ์„ ์—ด์–ด, ์ž๋™ ๋ฆฌ๋ทฐ์–ด ์ง€์ • ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

# ํŠน์ • ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ž๋™ ๋ฆฌ๋ทฐ์–ด ์ง€์ •

# ๋ฐฑ์—”๋“œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด ์ž๋™ ์ง€์ •
/backend/ @backend-team

# ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด ์ž๋™ ์ง€์ •
/frontend/ @frontend-team

# DevOps ๋‹ด๋‹น์ž ์ž๋™ ์ง€์ •
/config/ @devops-team

# ํŠน์ • ํŒŒ์ผ ๋‹ด๋‹น์ž ์ง€์ •
README.md @docs-team

๐Ÿ“Œ ์„ค์ • ๊ทœ์น™ ์ •๋ฆฌ

โœ… backend/ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ˆ˜์ •๋˜๋ฉด @backend-team์ด ์ž๋™ ๋ฆฌ๋ทฐ์–ด๋กœ ์ถ”๊ฐ€๋จ

โœ… config/ ํด๋”์—์„œ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋ฉด @devops-team์ด ๋ฆฌ๋ทฐ์–ด๋กœ ์ถ”๊ฐ€๋จ

โœ… README.md ํŒŒ์ผ์ด ์ˆ˜์ •๋˜๋ฉด @docs-team์ด ๋ฆฌ๋ทฐ์–ด๋กœ ์ž๋™ ์ง€์ •๋จ

 

๐Ÿ’ก ํŠน์ • ํŒ€์ด ์•„๋‹ˆ๋ผ ๊ฐœ์ธ ์‚ฌ์šฉ์ž๋„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

/backend/ @backend-team @itstimi-XD

โœ… ๋ฐฑ์—”๋“œ ํŒ€ ์ „์ฒด + itstimi-XD ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฆฌ๋ทฐ ์š”์ฒญ

 

๐Ÿ“Œ ํŒ€(@backend-team)๊ณผ ๊ฐœ์ธ(@username) ๋ชจ๋‘ ์ง€์ • ๊ฐ€๋Šฅํ•˜๋‹ค.


(3) CODEOWNERS ํŒŒ์ผ ์ปค๋ฐ‹ํ•˜๊ณ  ์ ์šฉํ•˜๊ธฐ

ํŒŒ์ผ์„ ์ €์žฅํ•œ ํ›„, Git์— ๋ฐ˜์˜ํ•œ๋‹ค.

git add .github/CODEOWNERS
git commit -m "Add CODEOWNERS for auto reviewer assignment"
git push origin main

โœ… ์ด์ œ GitHub์—์„œ PR์„ ์ƒ์„ฑํ•˜๋ฉด, ์ž๋™์œผ๋กœ ๋ฆฌ๋ทฐ์–ด๊ฐ€ ๋ฐฐ์ •๋œ๋‹ค! ๐ŸŽ‰


4๏ธโƒฃ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ?

์ด์ œ PR์„ ์ƒ์„ฑํ•ด๋ณด๋ฉด, ์˜ค๋ฅธ์ชฝ Reviewers ์„น์…˜์— ์ž๋™์œผ๋กœ ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค.

 

๐Ÿ›  ์ž๋™ ๋ฆฌ๋ทฐ์–ด ์ง€์ • ์˜ˆ์‹œ

 

โœ… ๋ฐฑ์—”๋“œ ์ฝ”๋“œ ์ˆ˜์ • → @backend-team์ด ์ž๋™ ๋ฆฌ๋ทฐ์–ด๋กœ ์ถ”๊ฐ€๋จ

โœ… config/ ๋””๋ ‰ํ† ๋ฆฌ ์ˆ˜์ • → @devops-team์ด ์ž๋™ ๋ฆฌ๋ทฐ์–ด๋กœ ์ถ”๊ฐ€๋จ

โœ… README.md ์ˆ˜์ • → @docs-team์ด ๋ฆฌ๋ทฐ์–ด๋กœ ์ž๋™ ์ง€์ •๋จ

 

๐Ÿ’ก ์ด์ œ ๋ฆฌ๋ทฐ์–ด๋ฅผ ์ผ์ผ์ด ์ถ”๊ฐ€ํ•  ํ•„์š” ์—†์ด GitHub๊ฐ€ ์•Œ์•„์„œ ํ•ด์ค€๋‹ค!


5๏ธโƒฃ CODEOWNERS ํŒŒ์ผ์„ ํ™œ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•  ์ 

๐Ÿšจ CODEOWNERS๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด?

CODEOWNERS ํŒŒ์ผ์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์•„๋ž˜ ์‚ฌํ•ญ์„ ํ™•์ธํ•ด๋ณด์ž.

 

โœ… ํŒŒ์ผ ์œ„์น˜๊ฐ€ .github/CODEOWNERS์— ์ •ํ™•ํ•˜๊ฒŒ ์ €์žฅ๋˜์—ˆ๋Š”๊ฐ€?

โœ… ์ง€์ •ํ•œ ๋ฆฌ๋ทฐ์–ด(@username ๋˜๋Š” @team)๊ฐ€ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ Collaborator ๋˜๋Š” Team์œผ๋กœ ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š”๊ฐ€?

โœ… ํŒŒ์ผ ํ˜•์‹์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘์„ฑ๋˜์—ˆ๋Š”๊ฐ€? (ํƒญ์ด ์•„๋‹Œ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„, ํŠน์ˆ˜๋ฌธ์ž ์—†์ด ์ž‘์„ฑ)

 

๐Ÿ“Œ GitHub์˜ ๊ถŒํ•œ ์ •์ฑ…์— ๋”ฐ๋ผ CODEOWNERS ๊ธฐ๋Šฅ์ด ์ผ๋ถ€ ์ œํ•œ๋  ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ, ์„ค์ • ํ›„ ํ…Œ์ŠคํŠธํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.


6๏ธโƒฃ CODEOWNERS๋ฅผ ํ™œ์šฉํ•œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ž๋™ํ™”

์ด์ œ CODEOWNERS ํŒŒ์ผ์„ ํ™œ์šฉํ•˜์—ฌ PR ๋ฆฌ๋ทฐ์–ด ์ž๋™ ๋ฐฐ์ •์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด, ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ข‹์„๊นŒ? ๐Ÿค”

 

โœ… PR ์ž‘์„ฑ ์‹œ ๋ฆฌ๋ทฐ์–ด์—๊ฒŒ ์ง‘์ค‘์ ์œผ๋กœ ํ™•์ธํ•  ๋ถ€๋ถ„์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

โœ… ๊ด€๋ จ ๋‚ด์šฉ์€ GitHub์—์„œ ๋ฆฌ๋ทฐ์–ด ์š”์ฒญํ•˜๋Š” ๋ฒ•๊ณผ ํšจ๊ณผ์ ์ธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์š”์ฒญ ๊ฐ€์ด๋“œ (ํ˜‘์—…ํŽธ #1)์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ณ  ์žˆ๋‹ค.

 

๐Ÿ“Œ PR ์ž๋™ ๋ฆฌ๋ทฐ์–ด ์ง€์ • + ํšจ๊ณผ์ ์ธ ๋ฆฌ๋ทฐ ์š”์ฒญ์„ ํ•จ๊ป˜ ์ ์šฉํ•˜๋ฉด ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋”์šฑ ์›ํ™œํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค! ๐Ÿš€


๐Ÿ“Œ ๊ฒฐ๋ก 

โœ… CODEOWNERS ํŒŒ์ผ์„ ํ™œ์šฉํ•˜๋ฉด PR ์ƒ์„ฑ ์‹œ ์ž๋™์œผ๋กœ ๋ฆฌ๋ทฐ์–ด๊ฐ€ ๋ฐฐ์ •๋  ์ˆ˜ ์žˆ๋‹ค.

โœ… ํŠน์ • ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•ด ๋‹ด๋‹น์ž๋ฅผ ๋ฏธ๋ฆฌ ์„ค์ •ํ•˜์—ฌ, ํ˜‘์—…์„ ๋”์šฑ ์›ํ™œํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ… GitHub์˜ ํ˜‘์—… ๊ธฐ๋Šฅ์„ ์ ๊ทน ํ™œ์šฉํ•˜๋ฉด ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค!

 

๐Ÿ”ฅ ์ž๋™ํ™”๋œ ๋ฆฌ๋ทฐ์–ด ์ง€์ •์œผ๋กœ GitHub ํ˜‘์—…์„ ๋”์šฑ ์Šค๋งˆํŠธํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด์ž! ๐Ÿš€

๋ฐ˜์‘ํ˜•

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Dev_TIMI

its_TIMI

ํ™œ๋™ํ•˜๊ธฐ