GitHub Actions๋ฅผ ์ด์ฉํ ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฌธํ ๊ฐ์ ๊ธฐ
GitHub Actions๋ฅผ ์ด์ฉํ ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฌธํ ๊ฐ์ ๊ธฐ ๊ด๋ จ
SmartEditor ํ์ ํญ์ ๋์ ์์ค์ ์ฝ๋ ํ์ง์ ์ ์งํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ชจ์ต์ด ์ฝ๋ ๋ฆฌ๋ทฐ์์๋ ๋๋ฌ๋ฉ๋๋ค.
ํ์ง๋ง ์ด์ฌํ ๋ ธ๋ ฅํ๋ ํ์์๋ ๋ถ๊ตฌํ๊ณ ๋ช๋ช ๋ถ๋ถ์์ ๊ฐ์ ์ ์ฌ์ง๊ฐ ์์์ต๋๋ค. ์ฝ๋ ํ์ง์ ์๊ฒฉํ๊ฒ ๊ด๋ฆฌํ๋ค ๋ณด๋ ๊ฐ๋์ ๋ฆฌ๋ทฐ๊ฐ ๊ธธ์ด์ง๊ณ ๊ทธ๋ก ์ธํด pull request(์ดํ PR) merge๊น์ง ๊ธด ์๊ฐ์ด ์์๋๊ธฐ๋ ํ์ต๋๋ค. ๋ํ ๋ฐ์ ์ผ์ ์ ์ฐ์ ์์์์ ๋ฐ๋ ค ๋ฆฌ๋ทฐ์ ์ ๊ทน์ ์ผ๋ก ์ฐธ์ฌํ์ง ๋ชปํ ๋๋ ์์์ต๋๋ค.
์ด์ ํ์ ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฌธํ ๊ฐ์ ์ ๊ด์ฌ์ด ์๋ ์์ ์ธ์์ด ๋ชจ์ฌ ๊ฐ์ ํ๋์ ์์ํ์ต๋๋ค.
๋ฌธ์ ์
๋จผ์ ์ ํฌ๋ฅผ ์ ์ธํ ํ์๋ค์ ์๊ฒฌ์ ํ์ ํ๊ณ ์ ํ์ต๋๋ค. ๋ค๋ฅธ ํ์๋ค๋ ์ด ๋ฌธ์ ์ ๋ํด ๊ฐ์ ์๊ฐ์ ๊ฐ์ง๊ณ ์๋์ง ๊ถ๊ธํ์ต๋๋ค. ๊ทธ๋์ ๋ค์์ ํฌํจํ ๋ช ๊ฐ์ง ๋ฌธํญ์ ๊ตฌ์ฑํ์ฌ ์ค๋ฌธ์ ์งํํ์ต๋๋ค.
- ๋ฆฌ๋ทฐํ๊ธฐ ์ด๋ ค์ ๋ ๊ฒฝํ์ ์๋ ค์ฃผ์ธ์.
- ์์ฒญ๋ฐ์ ๋ฆฌ๋ทฐ๋ฅผ ๋ฆ๊ฒ ํ์ธ/์น์ธํ๊ฒ ๋ ์ด์ ๋ ๋ฌด์์ผ๊น์?
- ์ฝ๋ ๋ณ๊ฒฝ ๋ผ์ธ ์๋ ๋ช ๋ผ์ธ์ด ์ ๋นํ ๊น์?
์ค๋ฌธ ๊ฒฐ๊ณผ, ํ์๋ค๋ ๋ฌธ์ ์ ๋ํด ์ ํฌ์ ๋น์ทํ๊ฒ ์ธ์ํ๊ณ ์์์ต๋๋ค. ์ฃผ์ ์๋ต์ ๋ค์๊ณผ ๊ฐ์์ต๋๋ค.
- ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ง์์ ๋ฆฌ๋ทฐ๊ฐ ์ด๋ ค์ ๋ค.
- ์ดํด๋๊ฐ ๋ถ์กฑํ์ฌ ๋ฆฌ๋ทฐ๊ฐ ์ด๋ ค์ ๋ค.
- ๋์ค์ ๋ฆฌ๋ทฐํ๋ ค๋ค๊ฐ ๋์ณค๋ค.
- ๋ฆฌ๋ทฐ์ด์ ์ฝ๋ฉํธ ์๋ต์ด ๋ฆ์ด์ ๋ถํธํ๋ค.
์ ๋ฆฌํด ๋ณด๋ฉด ๊ฐ์ ์ด ํ์ํ ํต์ฌ ๋ฌธ์ ๋ ๋ค์ ๋ ๊ฐ์ง์์ต๋๋ค.
- PR merge๊น์ง์ ๊ธด ์์ ์๊ฐ
- ๋ฎ์ ๋ฆฌ๋ทฐ ์ฐธ์ฌ์จ
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด GitHub Actions๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ๋ถ์ํ์ฌ ๊ฐ์ ๋ฐฉํฅ์ ์ฐพ๊ณ ์ ํ์ต๋๋ค.
๋ฐ์ดํฐ์์ ์ธ์ฌ์ดํธ ์ป๊ธฐ
naver/pr-stats
PR ๋ฐ์ดํฐ์ ๋ํ ํต๊ณ๋ฅผ ์ฐ์ถํ๋ pr-stats
์ก์
์ ๋ง๋ค์์ต๋๋ค. ๊ฐ PR์ ๋ํ ํต๊ณ, ์ ์ฒด PR ํต๊ณ, ์ฌ์ฉ์๋ณ ํต๊ณ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ก์
์
๋๋ค.
์ด ์ก์ ์ ์คํํ์ฌ CSV ํ์ผ์ด๋ ์ฝ์๋ก ํต๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ค์์ ์ฝ์๋ก ํต๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ ํ๋ฉด์ ๋๋ค. ๊ฐ๊ฐ PR์ ๋ํ ํต๊ณ, ์ ์ฒด PR ํต๊ณ, ์ฌ์ฉ์๋ณ ํต๊ณ ๊ฒฐ๊ณผ์ ๋๋ค.
๊ฐ PR์ ๋ํ ํต๊ณ์์๋ ์ ๋ชฉ, PR ์์ฑ ์์ , merge ์์ , ๋ณ๊ฒฝ๋ ๋ผ์ธ ๋ฐ ํ์ผ ์ ๋ฑ์ ์ ๋ณด๋ฅผ ์ป์ ์ ์๊ณ , ์ ์ฒด PR ํต๊ณ์์๋ ๋์ PR์ ํ๊ท ๋ฐ์ดํฐ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ์ฌ์ฉ์๋ณ ํต๊ณ์์ ๊ฐ์ธ๋ณ ๋ฆฌ๋ทฐ ์ฐธ์ฌ ์, ์ฐธ์ฌ์จ, ํ๊ท ์๋ต ์๊ฐ ๋ฑ์ ํ์ธํ ์ ์์ต๋๋ค.
์ก์
์ ๋ํ ๋ ์์ธํ ๋ด์ฉ์ GitHub (naver/pr-stats
)๋ฅผ ํ์ธ ๋ฐ๋๋๋ค.
๋ฐ์ดํฐ ์์ง ๊ฒฐ๊ณผ
pr-stats
์ก์
์ ์ด์ฉํด ์ต๊ทผ 2๋
์ ๋ฐ์ดํฐ๋ฅผ ์์งํด ๋ดค์ต๋๋ค.
์์ง ๊ฒฐ๊ณผ merge๊น์ง ํ๊ท ์ฝ 4์ผ์ ์๊ฐ์ด ์์๋์๊ณ , ํ๊ท ๋ฆฌ๋ทฐ ์ฐธ์ฌ์จ์ 67%์์ ํ์ธํ ์ ์์์ต๋๋ค. ์์ํ๋ ๊ฒ์ฒ๋ผ merge๊น์ง ๊ธด ์๊ฐ์ด ์์๋๊ณ ๋ฆฌ๋ทฐ ์ฐธ์ฌ์จ๋ ๊ทธ๋ค์ง ๋์ง ์์์ต๋๋ค.
ํด๊ฒฐ ๊ณผ์
์์ ์ธ๊ธํ ๋ ๊ฐ์ง ๋ฌธ์ ๋ฅผ ๊ฐ๊ฐ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
1. PR merge๊น์ง ์์๋๋ ์๊ฐ ๋จ์ถ
์๊ด๊ด๊ณ ๋ถ์
๋จผ์ ์ด๋ค ๋ฐ์ดํฐ๊ฐ PR merge๊น์ง ์์๋ ์๊ฐ๊ณผ ๊ด๋ จ์ด ์๋์ง ์์๋ณด๊ณ ์ ํ์ต๋๋ค.
์ด์ ์์ฑํ AI๋ฅผ ํ์ฉํ์ฌ, pr-stats
์ก์
์ผ๋ก ์ป์ ๋ฐ์ดํฐ๋ก๋ถํฐ ์งํ ๊ฐ ์๊ด๊ด๊ณ๋ฅผ ๋ถ์ํด ๋ดค์ต๋๋ค. ๋ฆฐํธ ๋ฃฐ ๋ณ๊ฒฝ ์ ์ฉ ๋ฑ ๋จ์ํ ๋ณ๊ฒฝ ์ฌํญ๋ง ๋ง๊ณ ํต๊ณ์ ๋ํ ์๋ฏธ๊ฐ ๋จ์ด์ง๋ PR์ ์ ์ธํ๊ธฐ ์ํด ๋ณ๊ฒฝ ๋ผ์ธ ์๊ฐ 3,000๋ผ์ธ ์ดํ์ธ PR์ ๋์์ผ๋ก ํ์ต๋๋ค.
ํผ์ด์จ ์๊ด ๊ณ์
์ผ๋ฐ์ ์ผ๋ก ์๊ด๊ณ์๋ ๋ค์๊ณผ ๊ฐ์ ์๊ด๊ด๊ณ๋ฅผ ๋ํ๋ ๋๋ค.
0
~0.1
: ๊ฑฐ์ ๋ฌด์ํ ์ ์๋ ์๊ด๊ด๊ณ0.1
~0.3
/-0.1
~-0.3
: ์ฝํ ์์ /์์ ์๊ด๊ด๊ณ0.3
~0.7
/-0.3
~-0.7
: ๋๋ ทํ ์์ /์์ ์๊ด๊ด๊ณ0.7
~1
/-0.7
~-1
: ๊ฐํ ์์ /์์ ์๊ด๊ด๊ณ
์ ๊ทธ๋ฆผ์ ์๊ด๊ณ์๋ณ ๋ํ์ ์ธ ์ฐํฌ๋ ๊ทธ๋ํ์ ๋ชจ์ต์ ๋๋ค. ์๊ด๊ด๊ณ๊ฐ ์์ผ๋ฉด ํน์ ํ ์ถ์ธ์ ์ด ๋ํ๋์ง ์๊ณ , ์๊ด๊ด๊ณ๊ฐ ๋์์๋ก ๋๋ ทํ ์ถ์ธ์ ์ ํํ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ฆ, ๊ฐ ์ ๋ด๋ถ์ ํํ๋ ์๊ด๊ณ์๊ฐ 1์ ๊ฐ๊น์ธ์๋ก ์์ ์๊ด๊ด๊ณ๊ฐ ์๊ณ , -1์ ๊ฐ๊น์ธ์๋ก ์์ ์๊ด๊ด๊ณ๊ฐ ์์ต๋๋ค. 0์ ๊ฐ๊น๋ค๋ฉด ๋ ์งํ ์ฌ์ด์ ์๊ด๊ด๊ณ๊ฐ ๊ฑฐ์ ์์์ ๋ํ๋ ๋๋ค.
์ฐ๋ฆฌ์ ๋ชฉํ๋ merge๊น์ง ์์๋๋ ์๊ฐ์ ๋จ์ถํ๋ ๊ฒ์ด์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ํ๋ด๋ ์งํ์ธ timeFromReviewToMerge
์ ์๊ด๊ณ์๊ฐ ๋์ ์งํ๋ฅผ ํ์ธํ์ต๋๋ค.
์ ๋ถ์ ๊ฒฐ๊ณผ์์ timeFromReviewToMerge
์ ์๊ด๊ณ์๊ฐ ๊ฐ์ฅ ๋์ ์งํ ์ธ ๊ฐ์ง๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
averageTimeToApproval
(0.84)๋จผ์ averageTimeToApproval
์ merge๊น์ง ์์๋ ์๊ฐ๊ณผ ๊ฐ์ฅ ๋์ ์๊ด๊ด๊ณ๊ฐ ์์์ต๋๋ค. ํ์ง๋ง ์ด ์งํ๋ ์ฌ์ค์ timeFromReviewToMerge
์ ๊ฑฐ์ ์ ์ฌํ ๊ฐ๋
์ด๋ฏ๋ก ์ ์ธํ์ต๋๋ค.
averageResponseTime
(0.79)๋ ๋ฒ์งธ๋ก ์๊ด๊ด๊ณ๊ฐ ๋์ ์งํ๋ averageResponseTime
์
๋๋ค. ํ๊ท ์๋ต ์๊ฐ์ ์ค์ผ ์ ์๋ค๋ฉด merge๊น์ง ์์๋๋ ์๊ฐ๋ ์ค์ผ ์ ์๋ค๋ ์๋ฏธ์
๋๋ค.
commentCount
(0.44)๋ง์ง๋ง์ผ๋ก commentCount
๋ merge๊น์ง ์์๋ ์๊ฐ๊ณผ ์ ์๋ฏธํ ์๊ด๊ด๊ณ๊ฐ ์์์ต๋๋ค. ํ์ง๋ง ์ฝ๋ฉํธ ์๋ฅผ ์ ํํ๋ค๋ ๊ฒ์ ์ฝ๋ ๋ฆฌ๋ทฐ์์ ํ๋ฐํ ์๊ฒฌ ๊ตํ์ ๋ฐฉํดํ ์ ์์ต๋๋ค. ์ด๋ ์คํ๋ ค ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฌธํ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์๋ค๊ณ ํ๋จํ์ฌ ์ด๋ฅผ ์ํ ์๋๋ ํ์ง ์์์ต๋๋ค.
์ด์ ํ๊ท ์๋ต ์๊ฐ์ ์ค์ด๋ ๊ฒ์ ๋ชฉํ๋ก ์ ํ์ต๋๋ค.
๋ฆฌ๋ทฐ ์๋ต ์๊ฐ ๊ฐ์
pr-stats
์ก์
์ผ๋ก ์ป์ ์ฝ 2๋
๊ฐ์ ํต๊ณ ๋ฐ์ดํฐ์์ ํ๊ท ์๋ต ์๊ฐ์ ์ฝ 45์๊ฐ ์ ๋๋ก, ๊ฐ์ ์ด ํ์ํด ๋ณด์์ต๋๋ค.
์ด์ ์ ํฌ ํ์ ๋ฆฌ๋ทฐ ์๋ต ์๊ฐ ๊ฐ์ ์ ์ํด ๋ค์ ๋ ๊ฐ์ง GitHub Actions๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค.
naver/notify-pr-review
๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํ๋ ์ฆ์ ๋ฆฌ๋ทฐ ์์ฒญ์ด ๋ค์ด์์์ Slack ๋ฉ์์ง๋ก ์๋ ค์ฃผ๋ ์ก์ ์ ๋๋ค.
๊ธฐ์กด์๋ ๋ฆฌ๋ทฐ ์์ฒญ์ ๋ณด๋ด๋ฉด ๋ฉ์ผ๋ก ์๋ฆผ์ ๋ฐ๊ธฐ ๋๋ฌธ์ ๋ค๋ฆ๊ฒ ํ์ธํ๊ฑฐ๋ ๋์น๋ ๊ฒฝ์ฐ๊ฐ ๋น๋ฒํ์ง๋ง, ์ด ์ก์ ์ ํตํด ๋ฆฌ๋ทฐ์ด๊ฐ ๋ฆฌ๋ทฐ ์์ฒญ์ ๋น ๋ฅด๊ฒ ์ ์ ์๊ฒ ๋์์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ํด๋น ์ก์ ์ผ๋ก ์ธํด ๋ง์ ๊ฐ์ ํจ๊ณผ๋ฅผ ์ฒด๊ฐํ์ต๋๋ค. ํนํ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ ๊ฐ๋จํ PR์ ๋ํด ํจ๊ณผ๊ฐ ์ปธ๋ค๊ณ ๋๊ผ์ต๋๋ค. ์ด์ ์ค์ ๋ก ์ํฅ์ ํ์ ํ๊ธฐ ์ํด ํด๋น ์ก์ ์ ์ฉ ์ ํ๋ก ๋ณ๊ฒฝ ๋ผ์ธ ์๊ฐ 20๋ผ์ธ ์ดํ์ธ PR์ ๋ํ ํ๊ท ์๋ต ์๊ฐ ๋ณํ๋ฅผ ํ์ธํด ๋ดค์ต๋๋ค.
์ ๊ทธ๋ํ๋ 20๋ผ์ธ ์ดํ์ PR์์ ์ก์ ์ ์ฉ ์ ํ ์๋ต ์๊ฐ ๋ถํฌ๋ฅผ ๋ํ๋ด๋ ๋ฐ๋ ๊ทธ๋ํ์ ๋๋ค. ํ์ฐํ ์ค๋ฅธ์ชฝ ๊ทธ๋ํ(์ ์ฉ ํ)์์ ์ ๋ฐ์ ์ผ๋ก ์๋ต ์๊ฐ์ด ํฌ๊ฒ ์ค์ด๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์์น์์ผ๋ก๋ 20๋ผ์ธ ์ดํ PR์ ํ๊ท ์๋ต ์๊ฐ์ด ํฌ๊ฒ ๊ฐ์ํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
- ์ ์ฉ ์ : ์ฝ 18์๊ฐ
- ์ ์ฉ ํ: ์ฝ 6.5์๊ฐ(์ฝ 64% ๊ฐ์)
naver/request-pr-review
์ํ๋ ์๊ฐ์ ์ ๊ธฐ์ ์ผ๋ก Slack ๋ฉ์์ง๋ก PR ๋ฆฌ๋ทฐ ์์ฒญ์ ๋ณด๋ด๋ ์ก์ ์ ๋๋ค. ๋ฆฌ๋ทฐ์ด์๊ฒ ๋ฆฌ๋ทฐํด์ผ ํ๋ PR์ด ์์์ ๋ฆฌ๋ง์ธ๋ํด ์ค๋๋ค.
์ฐธ๊ณ ๋ก ์ ํฌ ํ์ ๋งค์ผ ์ค์ 10์์์ 12์๋ฅผ ์ฝ๋ ๋ฆฌ๋ทฐ ์ง์ค ์๊ฐ์ผ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ค์ 10์์ ์๋ฆผ์ ๋ฐ๋๋ก ํ์ฌ ์ด๋ค PR์ ๋ฆฌ๋ทฐํด์ผ ํ๋์ง ํ์ธํ ์ ์๊ฒ ํ์ต๋๋ค.
๋ํ ๋ค์์ ์ค๋ช
ํ d-day-labeler
์ก์
๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด D-0
label์ด ๋ถ์ PR์ ๊ฐ์กฐํ์ฌ, ๋ฆฌ๋ทฐ์ด๊ฐ ๋ฆฌ๋ทฐ ์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ์ ๋์์ ์ค ์ ์์ต๋๋ค.
PR merge ๋ฐ๋๋ผ์ธ ์ค์
์๋ต ์๊ฐ ๊ฐ์ ์ธ์ ์ง์ ์ ์ผ๋ก merge๊น์ง ์์๋๋ ์๊ฐ์ ๋จ์ถํ ์ ์๋ ๋ฐฉ๋ฒ๋ ๊ณ ๋ฏผํ์ต๋๋ค.
pr-stats
์ก์
์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํด ๋ณด๋ timeFromReviewToMerge
๊ฐ 1, 2์ฃผ ํน์ ํ ๋ฌ ์ด์์ธ PR์ด ์กด์ฌํ์ต๋๋ค.
์ด๋ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด์ ์ฝ๋ ๋ฆฌ๋ทฐ ๊ธฐ๊ฐ์ ๋ํด ์ด๋ ์ ๋์ ๋ฐ๋๋ผ์ธ์ด ํ์ํ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค. ์ด์ D-n ๋ฃฐ์ ๋์ ํ์ฌ ํด๋น PR์ ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ์๋ฃ๋์ด์ผ ํ๋ ์์ ์ ๋ํ๋ด๊ณ ์ ํ์ต๋๋ค.
์ด๋ฅผ ์๋ํํ๊ธฐ ์ํด ๋ค์ ๋ ๊ฐ์ง GitHub Actions๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค.
naver/d-day-labeler
D-n ๋ฃฐ์ ๋ฐ๋ผ ์ํ๋ ์ฃผ๊ธฐ(cron)๋ก D-0
๊น์ง ์๋์ผ๋ก ๊ฐฑ์ ํ๋ ์ก์
์
๋๋ค. ์ ํฌ ํ์ ํ์ผ ์ค์ 0์์ ๊ฐฑ์ ํ๋๋ก ํ์ต๋๋ค.
๋ฆฌ๋ทฐ์ด๋ PR์ ์์ฑํ ๋ D-n ํ์์ label์ ํด๋น PR์ ๋ฐ๋๋ผ์ธ์ ๋ช ์ํ์ฌ PR์ ๊ธด๊ธ๋๋ฅผ ๋ํ๋ผ ์ ์์ต๋๋ค. ๋ฆฌ๋ทฐ์ด๋ ์ด๋ฅผ ํตํด ์ฝ๋ ๋ฆฌ๋ทฐ ์ ์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํ์ฌ ๋ ๊ธด๊ธํ PR์ ๋จผ์ ๋ฆฌ๋ทฐํ ์ ์์ต๋๋ค.
D-n ๋ฃฐ์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฆฌ๋ทฐ์ด๋ ๋งค๋ฒ PR ์์ฑ ์๋ง๋ค D-n label์ ์ง์ ์ถ๊ฐํด์ผ ํ์ต๋๋ค. ์ด ์ก์ ์ ์ฌ์ฉํ๋ฉด PR ์์ฑ ์ ํน์ Draft์์ Open ์ํ๋ก ์ ํ ์ ์๋์ผ๋ก ์ํ๋ label์ด ์ถ๊ฐ๋์ด ์ด๋ฐ ๋ฒ๊ฑฐ๋ก์์ด ํด์๋ฉ๋๋ค.
์ฐธ๊ณ ๋ก ์ ํฌ ํ์ D-3
label์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
D-n ๋ฃฐ์ ์ฌ์ฉํ๋ ์ ํฌ ํ ๋ชจ์ต์
๋๋ค. PR ์์ฑ ์ ์๋์ผ๋ก D-3
label์ด ๋ถ๊ณ , ํ๋ฃจ๊ฐ ์ง๋ ๋๋ง๋ค D-2
, D-1
, D-0
๊น์ง ์๋์ผ๋ก ๊ฐฑ์ ๋ฉ๋๋ค.
ํด๋น ์ก์ ์ ํจ๊ณผ๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ก์ ์ ์ฉ ์ ํ merge๊น์ง 3์ผ(72์๊ฐ) ์ด์ ์์๋ PR์ ๋น์จ์ ๋น๊ตํด ๋ณด์์ต๋๋ค.
์ ์ฉ ์ ์๋ merge๊น์ง 3์ผ ์ด์ ์์๋ PR์ ๋น์จ์ด ์ฝ 42%์์ง๋ง ์ ์ฉ ํ์๋ ์ฝ 28%๋ก 14%p ์ ๋ ๊ฐ์ํ ํจ๊ณผ๋ฅผ ๋ณด์์ต๋๋ค.
2. ์ฐธ์ฌ์จ ๊ฐ์
merge๊น์ง ์์๋๋ ์๊ฐ ๋จ์ถ๊ณผ ํจ๊ป ๋ ํ๋์ ์ฃผ์ ๋ชฉํ๋ ๋ฆฌ๋ทฐ ์ฐธ์ฌ์จ์ ๋์ด๋ ๊ฒ์ด์์ต๋๋ค. ์์ ๋ณธ ๋ด๋ถ ์ค๋ฌธ ๊ฒฐ๊ณผ, ๋ฆฌ๋ทฐ ์ฐธ์ฌ๊ฐ ์ด๋ ค์ ๋ ์ด์ 1, 2์๋ฅผ ์ฐจ์งํ ๋ฌธํญ์ ๋ค์๊ณผ ๊ฐ์์ต๋๋ค.
- PR์ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ง์์
- ์ฝ๋/ํ๋ก์ ํธ์ ๋ํ ์ดํด๋๊ฐ ๋ถ์กฑํด์
์ด์ PR ๋ณ๊ฒฝ ๋ผ์ธ ์๋ฅผ ์ ํํด ๋ฆฌ๋ทฐ์ด์ ๋ถ๋ด์ ์ค์ฌ ๋ฆฌ๋ทฐ ์ฐธ์ฌ์จ ๋์ด๊ณ ์ ํ์ต๋๋ค. ๋ํ, ํ๋์ PR์์ ๋ณ๊ฒฝ ๋ผ์ธ ์๊ฐ ๋ง๋ค๋ฉด ๋ฆฌ๋ทฐ์ด๊ฐ PR ์ค๋ช ํ๋ฅผ ์งํํ์ฌ ๋ฆฌ๋ทฐ์ด์ ์ฝ๋ ์ดํด๋ฅผ ๋๊ณ ์ ํ์ต๋๋ค.
PR์ ๋ณ๊ฒฝ ์ฌํญ์ด ํน์ ๋ผ์ธ ์๋ฅผ ๋์ด๊ฐ๋ฉด Slack์ผ๋ก ์๋ฆผ์ ๋ณด๋ด PR ์ค๋ช ํ๊ฐ ํ์ํ์ง ํฌํํ๋ ์ก์ ์ ๋๋ค.
์ ํฌ ํ์ ๊ฒฝ์ฐ ์ค๋ฌธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ํ์ฌ 400๋ผ์ธ์ ์ด๊ณผํ PR์ด ์์ฑ๋ ๊ฒฝ์ฐ ์๋์ผ๋ก Slack ์๋ฆผ์ ๋ณด๋ ๋๋ค. ๊ทธ ํ, ํ์๋ค์ด PR ์ค๋ช ํ ์งํ ์ฌ๋ถ๋ฅผ ์ด๋ชจ์ง๋ก ํฌํํ๊ณ PR ์ค๋ช ํ๋ฅผ ์งํํฉ๋๋ค.
์ด์ธ์๋ PR ํ ํ๋ฆฟ ๊ฐ์ , ์ฝ๋ ๋ฆฌ๋ทฐ ๊ฐ์ด๋ ์์ฑ ๋ฑ ์ฐธ์ฌ์จ ๊ฐ์ ์ ์ํ ํ๋์ ์งํํ์ง๋ง, ์ด ๊ธ์์๋ GitHub Actions๋ฅผ ์ง์ค์ ์ผ๋ก ๋ค๋ฃจ๋ฏ๋ก ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
์ก์ ์ ์ฉ ์ ํ ์งํ ๋น๊ต
pr-stats
์ก์
๊ฒฐ๊ณผ๋ฅผ ๋ถ์ํ์ฌ ์ก์
์ ์ฉ ์ ํ ์งํ๋ฅผ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค. ์ ํํ ๋น๊ต๋ฅผ ์ํด ๋์ผํ๊ฒ 1๋
๊ฐ์ 3,000๋ผ์ธ ์ดํ PR ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ์ต๋๋ค. ํด์ผ์ ํฌํจํ ์์น์์ ๊ฐ์ํ๊ณ ๋ด์ฃผ์๊ธธ ๋ฐ๋๋๋ค.
1. ๋ฆฌ๋ทฐ ์๋ต ์๊ฐ ๊ฐ์
๊ฐ์ ์ ๊ฒฐ๊ณผ์์๋ 12์๊ฐ ๋ด์ ๋น ๋ฅธ ๋ฆฌ๋ทฐ ์๋ต์ ๋ฐ์ PR์ด 30%์ธ ๋ฐ๋ฉด, ๊ฐ์ ํ ๊ฒฐ๊ณผ์์๋ 52%๋ก 22%p ์ฆ๊ฐํ์ต๋๋ค. 24์๊ฐ ๋ด์ ๋ฆฌ๋ทฐ ์๋ต์ ๋ฐ์ PR์ 60%์์ 73%๋ก 13%p ์ฆ๊ฐํ์ต๋๋ค. ๋ํ, 48์๊ฐ ์ด์์ ๋งค์ฐ ๋๋ฆฐ ์๋ต์ ๋ฐ์ PR์ 20%์์ 8%๋ก 12%p ๊ฐ์ํ์ต๋๋ค.
์๋ต์ด ๋น ๋ฅธ ์์ 20% PR์ ํ๊ท ๋ฆฌ๋ทฐ ์๋ต ์๊ฐ์ 1.1์๊ฐ์์ 0.2์๊ฐ์ผ๋ก 82% ๊ฐ์ํ์ต๋๋ค. ์ด๋ notify-pr-review
๊ฐ ํฐ ์ํฅ์ ๋ฏธ์น ๊ฒ์ผ๋ก ์๊ฐ๋ฉ๋๋ค. ๊ฐ๋จํ PR์ ๊ฒฝ์ฐ ์๋ฆผ์ ๊ฐํํ๋ ๊ฒ๋ง์ผ๋ก๋ ํฐ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์์ต๋๋ค.
์๋ต์ด ๋๋ฆฐ ํ์ 20% PR์ ํ๊ท ๋ฆฌ๋ทฐ ์๋ต ์๊ฐ์ 108.2์๊ฐ์์ 47.7์๊ฐ์ผ๋ก 56% ๊ฐ์ํ์ต๋๋ค. d-day-labeler
๋ก ๋ฐ๋๋ผ์ธ์ ์ค์ ํ๊ณ notify-pr-review
, request-pr-review
๋ก ์๋ฆผ์ ๊ฐํํด ๋ฐฉ์น๋๋ PR์ด ์ค์ด๋๋ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์์ต๋๋ค.
2. merge๊น์ง ์์๋๋ ์๊ฐ ๊ฐ์
๋ฆฌ๋ทฐ ์๋ต ์๊ฐ์ด ๊ฐ์ํจ์ ๋ฐ๋ผ merge๊น์ง ์์๋ ์๊ฐ ์ญ์ ๋๋ ทํ๊ฒ ๊ฐ์ํ ๊ฒ์ ๋ณผ ์ ์์์ต๋๋ค. ๊ฐ์ ์ ๊ฒฐ๊ณผ์์๋ 3์ผ ์ด๋ด์ merge๋๋ PR์ด 57%์ธ ๋ฐ๋ฉด ๊ฐ์ ํ ๊ฒฐ๊ณผ์์๋ 72%๋ก 15%p ์ฆ๊ฐํ๊ณ , 5์ผ์ ์ด๊ณผํ์ฌ ์ฅ์๊ฐ ์์๋๋ PR ์ญ์ ๊ฐ์ ์ ๊ฒฐ๊ณผ์๋ 26%์ธ ๋ฐ๋ฉด ๊ฐ์ ํ ๊ฒฐ๊ณผ์์๋ 12%๋ก 14%p ๊ฐ์ํ์ต๋๋ค.
3. ๋ฆฌ๋ทฐ ์ฐธ์ฌ ํ์ฑํ
ํ์๋ค์ ๋ฆฌ๋ทฐ ์ฐธ์ฌ์๋ ํฐ ๋ณํ๊ฐ ์์์ต๋๋ค. ์ ๊ทธ๋ํ๋ ๊ฐ์ ์ ํ ํ์๋ค์ ํ๊ท ๋ฆฌ๋ทฐ ๋ฐ์ ์๋(x์ถ)์ ๋ฆฌ๋ทฐ ์ฐธ์ฌ์จ(y์ถ)์ ๋ํ ํต๊ณ๋ฅผ ์ฐ์ ๋์ ๋ฐ๋ ๊ทธ๋ํ๋ก ๋ํ๋ธ ๊ฒ์ ๋๋ค.
๊ฐ์ ํ ์ ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ผ์ชฝ ์๋ก ์ด๋ํ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ ํ์๋ค์ ๋ฆฌ๋ทฐ ๋ฐ์ ์๋๋ ๋์ฒด๋ก ๋นจ๋ผ์ก๊ณ ์ฐธ์ฌ์จ์ ๋์์ก์์ ์๋ฏธํฉ๋๋ค.
๋ฟ๋ง ์๋๋ผ ์ฐธ์ฌ์จ์ 80๋ฒ์งธ ๋ฐฑ๋ถ์์(p80) ๊ฐ์ด ์ฝ 44%์์ ์ฝ 62%๋ก ๊ฐ์ ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋ง์น๋ฉฐ
์ด์ ์๋ ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ์ ๋ฉ์ผ๋ก ์๋ฆผ๋ฐ๋ ๋ฐฉ์์ด์์ต๋๋ค. ํ์ง๋ง ํ๋ฃจ์๋ ๋ง๊ฒ๋ ์์ญ ํต์ ๋ฉ์ผ์ด ์ค๊ฐ๊ธฐ์ ๋ค๋ฆ๊ฒ ํ์ธํ๊ฑฐ๋ ์์ ๋์น๋ ์ผ๋ ์์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ์ง์ฐ๋๋ฉด์ ๊ฐ๋ฐ ์์ฐ์ฑ์๋ ์ํฅ์ ๋ฏธ์ณค์ต๋๋ค. ๊ธํ ๋๋ Slack์ผ๋ก ๋ฐ๋ก ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํด์ผ ํ๊ณ , ๋ฆฌ๋ทฐ์ด์ ํผ๋๋ฐฑ์ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์์ ์ ์ง ์์ ์๊ฐ์ด ์๋ชจ๋๊ณค ํ์ต๋๋ค.
์ด๋ฒ ํ๋ ๊ฒฐ๊ณผ ์ฝ๋ ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค๊ฐ ํฌ๊ฒ ๊ฐ์ ๋์์ต๋๋ค. ์ด์ ๋ ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ์ด ์ค๋ฉด ๋ฉ์ผ๋ฟ๋ง ์๋๋ผ Slack์ผ๋ก๋ ์๋ฆผ์ ๋ฐ์ต๋๋ค. ๋ง์ฝ ์ด๋ฅผ ๋์น๋๋ผ๋, ๋ฆฌ๋ทฐํด์ผ ํ PR ๋ชฉ๋ก์ ๋งค์ผ ์ค์ Slack์ผ๋ก ์๋ฆผ๋ฐ์ต๋๋ค. ๊ฐ PR์ D-label๋ก ๋ง๊ฐ์ผ์ ๋ช ์ํ์ฌ PR์ด ๋ฐฉ์น๋๋ ์ผ์ด ์ค์๊ณ , ๋ณต์กํ PR์ PR ์ค๋ช ํ๊ฐ ํ์ํ์ง Slack์ผ๋ก ๋ฌป๋ ์ ์ฐจ๋ฅผ ๋์ ํ์ฌ ๋ฆฌ๋ทฐ ์ง์ ์ฅ๋ฒฝ์ ๋ฎ์ท์ต๋๋ค.
ํน์ ๋น์ทํ ๊ณ ๋ฏผ์ ํ๊ณ ๊ณ์ ๋ค๋ฉด, ์ ํฌ๊ฐ ์๊ฐํด ๋๋ฆฐ ๋ฐฉ๋ฒ์ ์๋ํด ๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค.
์ฐธ๊ณ ๋ก ์ ํฌ๊ฐ ์ฌ์ฉํ ๋ชจ๋ ์ก์ ์ ์คํ์์ค๋ก ๊ณต๊ฐ๋์ด ์์ผ๋ ํ ์ํฉ์ ๋ง๊ฒ ํ์ฉํ์ค ์ ์์ต๋๋ค.
naver/pr-stats
: PR ํต๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋จ์ผ PR์ ํต๊ณ, ๋ชจ๋ PR ํต๊ณ, ์ฌ์ฉ์ ํต๊ณ๋ฅผ ์ ๊ณตํฉ๋๋ค.naver/notify-pr-review
: ๋ฆฌ๋ทฐ ์์ฒญ ์ Slack ๋ฉ์์ง๋ก ์๋ฆฝ๋๋ค.naver/request-pr-review
: ์ ๊ธฐ์ ์ผ๋ก ์ํ๋ ์๊ฐ์ ๋ฆฌ๋ทฐ๊ฐ ํ์ํ PR ๋ชฉ๋ก์ ์๋ฆฝ๋๋ค.naver/notify-pr-line-count
: ๊ธฐ์ค ๋ผ์ธ ์ ์ด์์ PR์ด ๋ฑ๋ก๋๋ฉด PR ์ค๋ช ํ ๊ฐ์ต ์ฌ๋ถ๋ฅผ Slack์ผ๋ก ๋ฌป์ต๋๋ค.naver/d-day-labeler
: D-n label์ ์๋์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.naver/simple-labeler
: PR ์์ฑ ์ ์๋์ผ๋ก label์ ์ถ๊ฐํฉ๋๋ค.d-day-labeler
์ ํจ๊ป ์ฌ์ฉํ๋ฉด PR ์์ฑ ์ ์๋์ผ๋ก D-n label์ ์ถ๊ฐํ๊ณ ๊ฐฑ์ ํ ์ ์์ต๋๋ค.