Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
ํ๋ธ๋ฆฌ๋๋ ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ ์ด์๋ฅผ ๋จ์๋ก ํ์ฌ ๊ด๋ฆฌ ํฉ๋๋ค. JIRA ์ด์๋ ์งํ ์ํฉ์ ๋ฐ๋ผ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 9๊ฐ์ง์ ์ํ (OPEN, CONFIRMED, ANALYSIS, DEVELOP, HANDOVER, BACKPORT, RESOLVED, TEST, CLOSED) ๋ฅผ ๊ฐ์ง๋ฉฐ, ์ด์ ์งํ ์ํฉ์ ๋ฐ๋ผ ์ํ๋ฅผ ๋ณ๊ฒฝํ์ฌ ๊ด๋ฆฌํฉ๋๋ค. ์ฒ์ ์ด์๋ฅผ ์์ฑํ๋ฉด โOPENโ ์ด๊ณ , โCLOSEDโ ๋ก ๋ชจ๋ ๊ธฐ์ฌ ์์ ์ด ์๋ฃ๋ฉ๋๋ค.โ
๊ฐ ์ํ์์ ์ด์๋ฅผ ์งํํ๋ ์ฃผ์ฒด๋ ๋ค๋ฅผ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด โOPENโ ์ํ์์๋ ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋๊ฐ ํด๋น ์ด์์ ๋ํด ์ ๋ณ ์์ (triage) ํ ์น์ธ๋ ์ด์์ ๋ํด ๊ฐ๋ฐ์ ์ง์ ๊ณผ ํจ๊ป โCONFIRMEDโ์ํ๋ก ํ ๋นํฉ๋๋ค. "ANALYSIS" ์ํ๋ ๊ฐ๋ฐ์๊ฐ ํ ๋น ๋ฐ์ ์ด์๋ฅผ ๋ถ์ํ๋ ๋จ๊ณ๋ก ๋ถ์, ์ค๊ณ, POC ๋ฐ ์ค๊ณ์ ๋๋ฃ ๋ฆฌ๋ทฐ ๋ฑ์ ๊ฐ๋ฐ ์ ๋ถ์ ์์ ์ ์งํํฉ๋๋ค. "DEVELOP" ์ํ๋ ๋ถ์๋ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ, ๋๋ฃ ๋ฆฌ๋ทฐ , ๋จ์ ํ ์คํธ ๋ฐ ์ฝ๋ ๋จธ์ง์ ์งํํฉ๋๋ค. "HANDOVER" ์ํ๋ ํ์ง๋ณด์ฆํ(QA)์ ์ด๊ดํ๊ธฐ ์ํ ์ฌ์ ์์ ์ ํ๋ ๋จ๊ณ๋ก ํ ์คํธ ์๋๋ฆฌ์ค ์ ๋ฆฌ, ๋งค๋ด์ผ ์์ฑ ๋ฐ regression test ์์ ์์ ์ ์งํํฉ๋๋ค. โRESOLVEDโ ์ํ์์๋ QA ๋ฉ์ธํ ์ด๋๊ฐ ์ด์๋ฅผ ํ ์คํธ ๋ด๋น์์๊ฒ ํ ๋นํฉ๋๋ค. ์ง์ ๋ ํ ์คํธ ๋ด๋น์๋ "TEST"๋ก ์ํ ๋ณ๊ฒฝ ํ QA ์ ๋ฌด๋ฅผ ์ํํฉ๋๋ค. "BACKPORT" ์ํ๋ ํ์ ๋ฒ์ ์ ํ ์คํธ ์๋ฃ๋ ์ด์์ ์ฝ๋ ๋ฐ ๋งค๋ด์ผ์ ๋ฐ์ํฉ๋๋ค.
๋จ, ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋๋ ๋ชจ๋ ์ํ์์ ๋ด์ฉ๊ณผ ์ด์ ์ํ ์ ํ๊ณผ ๊ฐ์ ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค.

์ด ๋ฌธ์๋ ์ ์ฒด ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ JIRA, Github, ๋จธ์ง ํ ์ํฉ์ผ๋ก ๋๋์ด ๊ฐ๊ฐ์ ์ํฌํ๋ก์ฐ๋ฅผ ์ค๋ช ํฉ๋๋ค. ํ๋ธ๋ฆฌ๋ ํ๋ก์ ํธ์ ๊ธฐ์ฌํ๊ธฐ ์ ์ ๋ฌธ์ ์ ์ฒด๋ฅผ ํ ๋ฒ ํ๋ ์ ๊ถ์ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์งํํ๋ฉด์ ํ๋ก์ธ์ค์ ๊ฐ ๋จ๊ณ๋ง๋ค ํด๋น ์น์ ์ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋๋ โOPENโ ์ํ์์ ์ด์ ์งํ ์ ๋ณ ๊ณผ์ (Triage)๋ฅผ ํตํด โCONFIRMEDโ ์ํ๋ก ๋ฐ๊ฟ๋๋ค. ์ด ๋ ๋ค์์ ํ๋๋ฅผ ์ง์ ํฉ๋๋ค.
assignee: ์ด์ ์งํ ๋ด๋น์
planned version/s: ์ด์๋ฅผ ์งํํ๋๋ก ๊ณํ๋ ๋ฒ์
priority: ์ด์์ ์ค์๋์ ๋ฐ๋ผ ์ค์
triage: โConfirmedโ ์ํ๋ก ๋์ด๊ฐ๋ ๊ฒฝ์ฐ ํญ์ โApprovedโ ์ค์
labels: ํ์ํ ๋ ์ด๋ธ ์์ ๋กญ๊ฒ ์ค์
QA ๋ฉ์ธํ ์ด๋์ ํ ์คํธ ๋ด๋น์๋ โRESOLVEDโ ๋๋ "TEST" ์ํ์ธ ์ด์๊ฐ SPEC ๋ณ๊ฒฝ์ด ํ์ํ๋ค๊ณ ํ๋จํ๊ฑฐ๋ QA ํ ์คํธ๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ โQA Not Satisfiedโ ๋ฒํผ์ ๋๋ฌ โCONFIRMEDโ ์ํ๋ก ๋๋๋ฆด ์ ์์ต๋๋ค.
์ด์ ๋ด๋น ๊ฐ๋ฐ์๋ "ANALYSIS" ๋๋ "DEVELOP" ์ํ์ธ ์ด์๋ฅผ ๋ค๋ฅธ ์ ๋ฌด์ ์ํด ๋ ์ด์ ์งํํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์๋ "stop work" ๋ฒํผ์ ๋๋ฌ "CONFIRMED" ์ํ๋ก ๋๋๋ฆด ์ ์์ต๋๋ค.
์ผ์
์ด๋ ฅ ์ฌํญ
์์ฑ์
2021.04.01
์ด์ ์์ฑ
2021.04.02
๋ฆฌ๋ทฐ ์์
์ค๋ช ํ ([email protected])
2021.04.05
์ฐ๊ตฌ์ ํผ๋๋ฐฑ ๋ฐ์
์ ํ๊ท ([email protected])
2024.04.30
๊ฐ์ ๋ ์ํฌํ๋ก์ฐ ๋ฐ์
์ค๋ช ํ ([email protected])

CUBRID๋ ์คํ์์ค ํ๋ก์ ํธ๋ก, ์ผ๋ฐ์ ์ธ ์คํ์์ค ํ๋ก์ ํธ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์ํฉ๋๋ค. CUBRID์ ๊ฐ๋ฐ์๋ค์ ์คํ์์ค ๊ฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์ํ ํ์ ๋๊ตฌ๋ฅผ ์ด์ฉํด CUBRID๋ผ๋ ํ๋์ ํฐ ํ๋ก์ ํธ์ ํจ๊ป ๊ธฐ์ฌํ๊ณ ์์ต๋๋ค.
์ด ๋ฌธ์๋ ํ์ ๋๊ตฌ๋ฅผ ํ์ฉํ ๊ฐ๋ฐ ์ํฌ ํ๋ก์ฐ๋ฅผ ์ค๋ช ํ๊ณ ๊ฐ๋ฐ ๋ฌธํ์ ๋ํ ์ํธ ํฉ์๋ฅผ ์ํ ๊ธฐ๋ณธ ์์น ์๋ฆฝ ๋ชฉ์ ์ผ๋ก ์์ฑ๋์์ต๋๋ค. ์ด ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ํธ ๊ฐ์ ํฉ์๋ก ์ํฉ์ ๋ฐ๋ผ ์ ์ฐํ๊ฒ ์ ์ฉํ๊ณ , ๋ฌธ์๋ฅผ ์์ /๋ฐ์ ์์ผฐ์ผ๋ฉด ํฉ๋๋ค.
๊ณต์ ๊ณผ ๋๊ตฌ๋ณด๋ค ๊ฐ์ธ์ ์ํธ์์ฉ์
ํฌ๊ด์ ์ธ ๋ฌธ์๋ณด๋ค ์๋ํ๋ ์ํํธ์จ์ด๋ฅผ
๊ณํ์ ๋ฐ๋ฅด๊ธฐ๋ณด๋ค ๋ณํ์ ๋์ํ๊ธฐ๋ฅผ
CUBRID ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ ๋ค์ ๋ ๋๊ตฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์๋ฉ๋๋ค.
Issue Tracking: JIRA ()
Code Repository and Code Review: Github ()
CUBRID์ ๋ชจ๋ ํ๋ก์ ํธ, ๊ธฐ๋ฅ์ถ๊ฐ, ๋ฒ๊ทธ์์ ์ JIRA ์ด์ ์์ฑ์ผ๋ก๋ถํฐ ์์ํฉ๋๋ค. JIRA์ Issue workflow์ ๋ฐ๋ผ ๋ฌธ์ ๋ฅผ ์ ์, ๋ถ์ํ๋ ๋จ๊ณ๋ฅผ ์ง๋ ์ค๊ณ ๋ฐ ๊ตฌํ์ ์์ํ๊ฒ ๋ฉ๋๋ค. ์ค๊ณ ๋ฐ ๊ตฌํ ๋จ๊ณ์์๋ Github์์ ๋ธ๋์น ์์ฑ, Pull Request, ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํตํด ๊ฒํ /๊ฒ์ฆ ๊ณผ์ ์ ๊ฑฐ์น ํ CUBRID์ ์ฝ๋๋ฅผ ๋ฐ์ํฉ๋๋ค. ์ ๊ณผ์ ์ ๊ณ์ ๋ฐ๋ณตํ์ฌ CUBRID๋ฅผ ๊ณ์ ๋ฐ์ ์ํต๋๋ค.
Triage๋ฅผ ํตํด ์ง์ ๋ ๊ฐ๋ฐ์(assign์ ์ํด ๊ฐ๋ฐ์๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ)๋ โStart Analysisโ ๋๋ "Start Develop" ๋ฒํผ์ ๋๋ฌ due date ์ ํ ํ โANALYSISโ ๋๋ "DEVELOP" ์ํ๋ก ๋ณ๊ฒฝํฉ๋๋ค. โANANLSYSโ ์ํ๋ ๋ถ์(๋๋ฒ๊น ํฌํจ), POC, ์ค๊ณ ๋ฐ ์ค๊ณ ๋ฆฌ๋ทฐ ์์ ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, "DEVELOP" ์ํ๋ ๊ตฌํ, ์ ๋(unit) ํ ์คํธ ๋ฐ ๋๋ฃ ๋ฆฌ๋ทฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ฐ๋ฐ์๋ ์งํ ์ค์ธ ๊ฐ๋ฐ ๋จ๊ณ์ ๋ง์ถฐ ๊ฐ๋ฐ ์ํ๋ฅผ ๋ณ๊ฒฝํด์ผํฉ๋๋ค.
๊ฐ๋ฐ์๋ ์์ ์งํ ์ํ(ANALYSIS, DEVELOP)์์ โNeed Analysisโ ๋๋ "Need Develop" ๋ฒํผ์ ๋๋ฌ ์์ ์งํ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ๋ฉด์ ๋ฐ๊ฒฌํ ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ ์์ ์ ํตํด ํด๊ฒฐํ ์ ์๊ณ , ๋ถ์ ๋๋ ์ค๊ณ์์ ๊ณ ๋ ค๊ฐ ๋ ํ์ํ ๊ฒฝ์ฐ "Need Analysis" ๋ฒํผ์ ํตํด "ANALYSIS" ์ํ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
๋ด๋น ํ ์คํฐ๋ ํ ์คํธ ์๋ฃ ํ "Need Backport" ๋๋ฌ planned version์ ๋ช ์๋ ํ์ ๋ฒ์ ์ ๋ฐฑํฌํธ๋ฅผ ์์ฒญํฉ๋๋ค. "BACKPORT"์ํ๋ ์ฝ๋ ๋ฐ ํ ์คํธ ์ผ์ด์ค๋ฅผ planned version์ ๋ช ์๋ develop ๋ธ๋์น๋ฅผ ์ ์ธํ ํ์ ๋ธ๋์น์ ๋ฐฑํฌํธ ์์ ์ ์งํํฉ๋๋ค.
๋ด๋น ๊ฐ๋ฐ์๋ ๊ตฌํ ์๋ฃ (๋๋ฃ ๋ฆฌ๋ทฐ ๋ฐ ์ฝ๋ ๋จธ์ง)๋ ํ "Accept the fix" ๋ฒํผ์ ํตํด ํ์ง ๋ณด์ฆํ(QA)์ ์ด๊ด์ ํ์ํ ์์ ์ ํ๊ธฐ ์ํ "HANDOVER" ์ํ๋ก ๋ณ๊ฒฝํฉ๋๋ค. "HANDOVER" ์ํ์์๋ ๋งค๋ด์ผ ์์ฑ, ํ ์คํธ ํญ๋ชฉ ์์ฑ ๋ฐ ์คํ ๋ณ๊ฒฝ๋ก ์ธํด ์์ ์ด ํ์ํ regression ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ ํฉ๋๋ค.
ํ์ง ๋ณด์ฆํ ์ด๊ด ํ QA ๋ฉ์ธํ ์ด๋ ๋๋ ํ ์คํธ ๋ด๋น์๊ฐ ํ ์คํธ ๊ด๋ จ ์ถ๊ฐ ์์ฒญ์ด ์์ ๊ฒฝ์ฐ "Need Something" ๋ฒํผ์ ๋๋ฌ "HANDOVER" ์ํ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.



QA ๋ด๋น์๋ ํด๋น ์ด์์์ ํ์ํ QA ์์ ์ด ์๋ฃ๋๋ฉด ์ด์๋ฅผ ์ข ๋ฃํ์ฌ โCLOSEDโ ์ํ๋ก ๋ณ๊ฒฝํฉ๋๋ค. ์ด ๋ ๋ค์์ ์ฌํญ์ ํ์ธํฉ๋๋ค.
QA scenario ์ถ๊ฐ/์์ ๋ฐ ํต๊ณผ ์ฌ๋ถ
Planned version/s ์ ๋ฐ๋ฅธ ๋ฐฑํฌํธ ๋ฐ์ ์ฌ๋ถ
๋ง์ฝ ๋๊ตฐ๊ฐ ํ๋ธ๋ฆฌ๋์ ์ฒ์ ๊ธฐ์ฌ๋ฅผ ํ๋ ๊ฒฝ์ฐ Pull Request๋ฅผ ํตํด ์ฝ๋๋ฅผ ๋ฐ์ํ๊ธฐ ์ ์ CLA๋ฅผ ์ ์ถํ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๋ค์์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค.
QA ๋ด๋น์๋ "Start Test" ๋ฒํผ์ ๋๋ฌ "TEST" ์ํ๋ก ๋ณ๊ฒฝํฉ๋๋ค. "TEST" ์ํ๋ ๋งค๋ด์ผ ํ ์คํธ, ํ ์คํธ ์๋๋ฆฌ์ค ์์ฑ ๋ฐ ํ ์คํธ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋, QA ๋ฉ์ธํ ์ด๋ ๋ฐ QA ๋ด๋น์๋ ์ข ๋ฃ๋ ์ด์("CLOSED")์ ๋ํด ์ถ๊ฐ์ ์ธ ํ ์คํธ๊ฐ ํ์์ "Need Test"๋ฅผ ํตํด "TEST"๋ก ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
CUBRID์์๋ ์์ค ์ฝ๋๋ฅผ ๊ด๋ฆฌํ๊ณ , ๊ฐ๋ฐ ์งํ ์ ์ฝ๋ ๋ฆฌ๋ทฐ์ ๊ฐ์ ํ์ ์ ์ํ ๋๊ตฌ๋ก Github์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. Github์ ๊ธฐ๋ฐ์ผ๋ก ์งํํ๋ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ์ ์ดํดํ๊ธฐ ์ํด์๋ ๋ค์์ ์ฌํญ์ ์ ์ดํดํ๋ฉด ์ข์ต๋๋ค.
Git ๋ธ๋์น ๋ชจ๋ธ
Pull Request์ ์๋ํ ๋๊ตฌ
๋ด๋น ๊ฐ๋ฐ์๋ ์์ ์๋ฃ (โHANDOEVR", "BACKPORT") ๋ ์ดํ์ โCheck-in Fixโ ๋ฒํผ์ ๋๋ฌ โRESOLVEDโ ์ํ๋ก ๋ณ๊ฒฝํ๊ณ , ํด๋น ์ด์๋ฅผ QA ๋ฉ์ธํ ์ด๋์ ์ด๊ดํฉ๋๋ค. QA๋ก ์ด๊ด ํ์๋ ์ด์์ ์ฝ๋ฉํธ๋ฅผ ํตํด ๊ฐ๋ฐ์์ QA ๋ด๋น์๊ฐ ์ปค๋ฎค๋์ผ์ด์ ํฉ๋๋ค.
โRESOLVEDโ๋ก ์ํ ๋ณ๊ฒฝ ์ ๋ค์์ ํ๋๋ฅผ ํ์๋ก ์ ๋ ฅํด์ผ ํฉ๋๋ค.
QA assignee: ๋ณ๊ฒฝ ํ์ ์์ด ์๋์ผ๋ก ํ ๋น๋ฉ๋๋ค. (๊ธฐ๋ณธ : QA ๋ฉ์ธํ ์ด๋)
๋ง์ฝ QAํ์์ ํ ์คํธ ๋๊ตฌ์์ ๊ฒ์ฆ ํ ๋ฐ์ํ ๋ณ๊ฒฝ์ ๋ฌธ์ ๊ฐ ์์ด QA ์์คํ ์ ํฌ๊ฒ ์ํฅ์ ์ฃผ๋ ๊ฒฝ์ฐ QAํ์์ ํด๋น ๋ณ๊ฒฝ์ commit์ ๋ํด revert ํ๊ณ JIRA๋ฅผ โCONFIRMEDโ ์ํ๋ก ๋๋๋ฆด ์ ์์ต๋๋ค. ์ด ๋ ๊ฐ๋ฐ์๊ฐ ํด๋น ์ด์๊ฐ ๋ค์ triage๊ฐ ํ์ํ๋ค๊ณ ํ๋จํ๋ ๊ฒฝ์ฐ โOPENโ ์ํ๋ก ๋๋๋ฆด ์ ์์ต๋๋ค.
QA ์์คํ ์ ์ํฅ์ ์ฃผ๋ ๊ฒฝ์ฐ๋ ๋ค์์ ์์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ฆ์ ํด๊ฒฐํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
์ผ๋ถ ๋๋ ์ ์ฒด ์์คํ ์ด ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ (core ํ์ผ ์์ฑ)
์์คํ ์ด ๋ฉ์ถ๋ ๊ฒฝ์ฐ (hang)
QA ํ์์ ํ ์คํธ ์์คํ ์ ์ด์ํ๊ธฐ ์ํด Jenkins๋ผ๋ CI ํด์ ์ด์ํฉ๋๋ค. Pull Request๊ฐ ๋ฐ์๋๋ฉด (merge), Jenkins๋ Github๊ณผ ์ฐ๊ฒฐ๋์ด ์์ด ๋ฐ์๋ ์ฌํญ์ ์๋์ผ๋ก ํ ์คํธ๋ฅผ ์งํํฉ๋๋ค. (์ฐธ๊ณ : )
Jenkins์์ ํ ์คํธ๊ฐ ๋ชจ๋ ์ํ๋๊ณ ๊ทธ ๊ฒฐ๊ณผ ๋ฆฌํฌํธ๋ ์์ ํ์ธํ ์ ์์ต๋๋ค. ํ์ด์ง์ ์ข์ธก์์ ๋ฒ์ ๋ณ ํ ์คํธ ๊ฒฐ๊ณผ ๋ฆฌํฌํธ๋ฅผ ํ์ธํ ์ ์๊ณ , ์ค๋ฅธ์ชฝ์๋ ์ต์ ํ ์คํธ ๋ฆฌํฌํธ์ ๋ํ ์์ฝ์ ๋ณด์ฌ์ค๋๋ค.
์ข์ธก์ ํ ์คํธ ๊ฒฐ๊ณผ ๋ฆฌํฌํธ๋ฅผ ๋๋ฌ๋ณด๋ฉด ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ํญ์ด ์์ต๋๋ค. ๊ฐ๊ฐ ๊ธฐ๋ฅ, ์ฑ๋ฅ, ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ํ ์คํธํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋๋ค. (์ ์ผ ์ฐ์ธก์ ๋ฒํผ์ ๊ฐ๋ฐํ์์ ์ฌ์ฉํ์ง ์์ต๋๋ค)
ํ๋ธ๋ฆฌ๋์์ ๊ธฐ์ฌ๋ ๋ค์์ ํ๋์ ํตํด ์งํํฉ๋๋ค.
์ฌ์ ์ปค๋ฎค๋์ผ์ด์ : ๊ธฐ์ฌ์๊ฐ ์ด๋ค ๋ฒ๊ทธ๋ ๊ฐ์ ํ ์ฌํญ์ ์ฐพ๋ ๊ฒฝ์ฐ ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋์ ์ปค๋ฎค๋ํฐ์ ์๊ฒฌ๊ณผ ๋ฐฉ๋ฒ์ ์ ์
์ด์ ์์ฑ: ์ฌ์ ์ปค๋ฎค๋์ผ์ด์ ์ ํตํด ๊ธฐ์ฌ ๋ด์ฉ๊ณผ ๋ฐฉํฅ์ ๋ํ ์๊ฒฌ์ด ์ถฉ๋ถํ ์๋ ด๋์๊ณ ๊ธฐ์ฌํ๊ธฐ ์ํ ํฉ์์ ๋๋ฌํ๋ค๋ฉด ์ด์๋ฅผ ์์ฑ
์ด์์ ๋์์ธ ๋ฌธ์์์ ์ ์ํ ๋์๊ณผ ๋ค๋ฅธ ๊ฒฝ์ฐ
๋๋ฌด ๋ง์ ํ ์คํธ ์ผ์ด์ค ์คํจ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ
์ฌ๊ฐํ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ
์์ ์ํฉ์ด ์ง์๋ ์ํ๋ก QA ์์คํ ์ด ๊ณ์ ์ด์๋๋ ๊ฒฝ์ฐ, ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ๋ ๊ฒฐ๊ณผ์ ์ ๋ขฐ์ฑ(robustness)์ ์ํฅ์ด ์๊ณ ์ดํ ๋ฌธ์ ํ์ ์ ํ์ํ ๋น์ฉ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ปค์ง๊ฒ ๋ฉ๋๋ค.
๋ง์ฝ JIRA๊ฐ โOPENโ ์ํ๋ก ๋์๊ฐ๋ค๋ฉด, JIRA Workflow์ ๋ฐ๋ผ ์ค๊ณ ๋์์ธ๊ณผ ๊ตฌํ, ์ฝ๋ ๋ฆฌ๋ทฐ ๋จ๊ณ๋ฅผ ์ฒ์์ผ๋ก ๋ค์ ์งํํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๊ฐ ๋จ๊ณ์์ ์ฌ๊ฒํ ๊ฐ ํ์ํ๋ค๋ฉด, ํผ์ณ ๋ธ๋์น๋ฅผ ์์ฑํ์ฌ ์งํํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
์ธ๋ถ ๊ธฐ์ฌ๋ฅผ ๋ฐ์ ๋ ๊ฐ์ฅ ์ค์ํ ๋ชฉํ๋ ์ธ๋ถ ๊ธฐ์ฌ์์ ํ๋์ ๋๊น์ง ๋ง์น๋๋ก ์ ๋ํ๋ ๊ฒ์ ๋๋ค. ๊ทธ ์ค ๊ธฐ์ฌ์ ์์์ธ ์ปค๋ฎค๋์ผ์ด์ ์ด ๊ฐ์ฅ ์ด๋ ต๊ณ ๊ท์ฐฎ์ ๋จ๊ณ์ ๋๋ค. ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋์๊ฒ ์ค๋์ ์ํด ํ ์คํธ ์๋ฃ, ๊ฐ๋จํ ์ค๊ณ ๋์์ธ, ์ฝ๋ ๋ถ์ ๋ฑ์ด ์ ํ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ ์ง๊ธ ํ๋ธ๋ฆฌ๋์ ์ด๋ค ๊ธฐ๋ฅ ๊ฐ์ ์ด ํ์ํ ์ง ์ง์ ์ฐพ์๋ด๋ ๊ฒ๋ ์ฝ์ง ์์ต๋๋ค.
ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋์ ์ฝ์ด ๊ฐ๋ฐ์๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ๋ํด ์ด๋ฏธ ์งํ์ ํฉ์ํ์ง๋ง ๋ฆฌ์์ค ๋ถ์กฑ์ผ๋ก ์งํํ์ง ๋ชปํ ๊ฒฝ์ฐ ์ด์๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๊ธฐ๋ ํฉ๋๋ค. ์ด๋ฌํ ์ด์๋ฅผ ํ์ฉํ๋ฉด ์ปค๋ฎค๋์ผ์ด์ ๊ณผ ์ด์ ์์ฑ ๋จ๊ณ๋ฅผ ์๋ตํ๊ณ ์ธ๋ถ ๊ธฐ์ฌ์๊ฐ ์ฝ๊ฒ ์์ํด๋ณผ ์ ์์ต๋๋ค.
ํนํ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ์ด์ ์ค ๋น๊ต์ ๊ธฐ์ฌ ๋์ด๋๊ฐ ์ฝ๊ณ ์งง์ ์๊ฐ์ ๊ธฐ์ฌํด๋ณผ ์ ์๋ ์ด์์ ๋ํด โGood First Issueโ ์ด์๋ก ์ค์ ํด๋๊ณ ๊ฐ์ด๋ํ๋ค๋ฉด ๊ธฐ์ฌ์๊ฐ ์ข ๋ ์ฝ๊ฒ ํ๋ธ๋ฆฌ๋์ ๊ธฐ์ฌ๋ฅผ ์์ํ ์ ์์ต๋๋ค. ํ ๋ฒ ๊ธฐ์ฌ ํ๋ก์ธ์ค๋ฅผ ๊ฒฝํํ๊ณ ๋๋ฉด ๊ทธ ๋ค์์ ํจ์ฌ ์ฝ๊ฒ ๊ธฐ์ฌํ ์ ์์ ๊ฒ์ ๋๋ค.
โGood First Issueโ๋ JIRA Issue label์ ์ง์ ํด๋๊ณ ์ปค์คํ ํํฐ๋ก ๋ง๋ค์ด๋๊ณ ๊ฐ์ด๋ํ๋ฉด ์ข์ต๋๋ค.
manual: ๋งค๋ด์ผ ์์ฑ ๋๋ ์์ ์ด ํ์ํ์ง ์ค์ ํฉ๋๋ค. (need manual)
QA scenario
not required : QA ์๋๋ฆฌ์ค ์ถ๊ฐ๊ฐ ํ์ํ์ง ์๋ ๊ฒฝ์ฐ (๊ธฐ๋ณธ๊ฐ)
required : QA ์๋๋ฆฌ์ค ์ถ๊ฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ
revise required : ๊ธฐ์กด QA ์๋๋ฆฌ์ค์ ๋ณ๊ฒฝ์ด ํ์ํ ๊ฒฝ์ฐ
fix version/s: ํด๋น ์ด์๊ฐ ๋ฐ์(merge)๋ ๋ฒ์ ์ ๋ช ์ํฉ๋๋ค. (์ด ํ๋๋ QAํ์์ ํ ์คํธ ๋ฐ ๋ฆด๋ฆฌ์ฆ๋ฅผ ์ํด ์ฐธ์กฐํจ)
QA ๋ฉ์ธํ ์ด๋๋ QA ๋ด๋น์๋ฅผ ์ง์ ํด์ ํ ๋นํฉ๋๋ค. QA ๋ด๋น์๋ ๋ค๋ฅธ ์์ ์ ์ํด ํด๋น ์ด์์ ๋ํด ๋ ์ด์ ํ ์คํธํ ์ ์๋ ๊ฒฝ์ฐ "Stop Test" ๋ฒํผ์ ํตํด "RESOVED" ์ํ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋๋ ์ด์ ์ ๋ณ์("OPEN") ์์ฑ๋ ์ด์๊ฐ ๋ฒ๊ทธ๊ฐ ์๋๋ผ๊ณ ํ๋จ์ โBug Invalidโ ๋ฒํผ์ ๋๋ฌ โRESOLVEDโ์ํ๋ก ๋ณ๊ฒฝํ ์ ์๊ณ , ๋ด๋น ๊ฐ๋ฐ์๋ ์ด์ ์งํ ์ค ("CONFIRMED", "ANALYSIS", ๋๋ "DEVELOP") ํด๋น ์ด์์ ๋ํ์ฌ ์์ ํ ํ์๊ฐ ์๋ค๊ณ ํ๋จ ์ โResolve without fixโ ๋ฒํผ์ ๋๋ฌ โRESOLVEDโ ์ํ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ดํ์๋ QA ๋ฉ์ธํ ์ด๋๊ฐ โCLOSEDโ์ํ๋ก ๋ณ๊ฒฝํ์ฌ ์ด์๋ฅผ ์ข ๋ฃํ๊ฑฐ๋, ๋ค์ ๋ฒ๊ทธ๋ก ํ๋จํด์ โOPENโ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.


๋จธ์ง ์ ๊ธฐ๋ฅ ํ ์คํธ, ์ฑ๋ฅ ํ ์คํธ, ๋ฉ๋ชจ๋ฆฌ ๋ฆญ์ ๊ผญ ํ์ธํฉ๋๋ค. ํนํ ์ฑ๋ฅ ํ ์คํธ๊ฐ 5%์ด์ ์ฐจ์ด๊ฐ ๋๋ฉด ๋ฌธ์ ๊ฐ ์๋์ง ๋ณผ ํ์๊ฐ ์์ต๋๋ค.
ํ ์คํธ๋ ๊ธฐ๋ฅ์ ํ ์คํธ (Function Test)์ ๋น๊ธฐ๋ฅ์ ํ ์คํธ (Non-Function Test)๋ก ๋๋์ด์ ธ ์์ต๋๋ค. ๋จผ์ ๊ธฐ๋ฅ ํ ์คํธ๋ฅผ ์ดํด๋ณด๋ฉด, ๋ฆฌ๋ ์ค์ ์๋์ฐ ํ๊ฒฝ์ ๋ํด ๊ฐ๊ฐ ํ ์คํธ๋ฅผ ์งํํ๊ณ ์์ต๋๋ค. ํ์ฌ ์๋์ฐ๋ ๋ฆฌ๋ ์ค๋ณด๋ค ํ ์คํธํ๋ ํญ๋ชฉ์ ๊ฐ์๊ฐ ์ ์ต๋๋ค.
์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋ฐ ๋ฒ๊ทธ ์์ ์ด ํ์ํ ๋์ 'develop' ๋ธ๋์น๋ก๋ถํฐ ๋ถ๊ธฐํ์ฌ feature ๋ธ๋์น๋ฅผ ๋ง๋ค์ ์์ต๋๋ค. ์ด ๋ธ๋์น๋ forkํ ๋ด ์ ์ฅ์์์ โdevelopโ ๋ธ๋์น๋ก๋ถํฐ ๋ถ๊ธฐํ ๋ธ๋์น์๋ ๋ค๋ฆ ๋๋ค.
Feature Branch์ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํฉ๋๋ค.
feature/<์ด๋ฆ>
์์) feature/javasp, feature/tde, feature/truncate_table
์์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ์ค์ ํ๋ฉด, ์๋์ผ๋ก Github check์ด ์ํ๋ ์ ์์ต๋๋ค.
์ด ๋ธ๋์น์ ์ฃผ์ ๋ชฉ์ ์ ๋ฐ์ํ ์ฝ๋์ ๊ท๋ชจ๊ฐ ํด ๋ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ฌ๋ฌ ๋ผ์ด๋์ ๋๋์ด ์งํํ๊ธฐ ์ํ ๋ชฉ์ ์ ๋๋ค. โdevelopโ์ ๊ฐ๋ฐ ํ ๊ธฐ๋ฅ์ ์ผ๋ถ๋ง์ ๋ฐ๋ก ๋ฐ์ํ์ง ์๊ณ feature ๋ธ๋์น์์ ์ฌ๋ฌ ๊ฐ์ PR๋ก ํจ์จ์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ์ ๊ฒ์ฆ ๊ณผ์ ์ ๊ฑฐ์น ํ ์ข ๋ ์์ ์ ์ผ๋ก โdevelopโ์ ๋ฐ์ํฉ๋๋ค.
git ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์ฐธ๊ณ ํ์ฌ ๊ด๋ฆฌํฉ๋๋ค.
์ฐธ๊ณ ! Feature Branch๋ ์์๋ก ์์ฑํ ์ ์์ผ๋ฉฐ, ๊ธฐ๋ฅ์ ๋ฆฌ๋ทฐ๋ฅผ ์๋ฃํ๊ณ develop ๋ธ๋์น์ ๋จธ์งํ ๊ฒฝ์ฐ ์ญ์ ํฉ๋๋ค.
backport๋ ์๋ก์ด ๋ฒ์ ์ ๊ธฐ๋ฅ ๋ฐ ์์ ์ฌํญ์ ์ด์ ๋ฒ์ ์ ๋ฐ์ํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด CUBRID 11์์ ๋ฐ๊ฒฌ๋์ด ๊ณ ์ณ์ง ๋ฒ๊ทธ๋ฅผ CUBRID 10.2.1 ๋ฒ์ ์์๋ ๋ฐ์ํ์ฌ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ณ ์ณ์ผ ํ๋ ๊ฒฝ์ฐ backport๋ฅผ ์งํํฉ๋๋ค.
์ด ๊ฒฝ์ฐ Github ๋๊ตฌ์ ๊ด์ ์์ ๋ณด๋ฉด develop ๋ธ๋์น์ ๋ฐ์๋ ์ปค๋ฐ์ release/10.2 ๋ธ๋์น์ ๋ฐ์ํ๋ ๊ฒ์ ๋๋ค. ์ด ๋ ์ฃผ์ํ ์ฌํญ์ ์ฌ๋ฌ ๋ฒ์ ์ ๋ฐ์ํด์ผ ํ๋ ๊ธฐ๋ฅ์ด๋ ๋ฒ๊ทธ ์์ ์ ๊ฒฝ์ฐ ๋ฐ๋์ develop์ ๋จผ์ ์ปค๋ฐ์ ๋ฐ์ํ๊ณ release์ backport ํด์ผ ํฉ๋๋ค. QA regression ๊ฒฐ๊ณผ ํ์ธ ๋ฐ ์ถ๊ฐ ํจ์น๋ฅผ ํตํด ๊ฒ์ฆ๋ ํจ์น๋ฅผ ์ด์ ๋ฒ์ ์ backport ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด์ ๋ฒ์ ์ ์์ ์ฑ์ ํด์น๋ ๊ฒ์ ์ต์ํ ํ ์ ์์ต๋๋ค. ๋ง์ฝ develop์์ ๋ฐ์ํ์ง ์๋ ๊ฒฝ์ฐ release์๋ง ๋ฐ์ํฉ๋๋ค.
backport ์ ๋ค์์ ์ฐธ๊ณ ํ์ฌ ์งํํฉ๋๋ค.
์ฌ๋ฌ ๋ฒ์ ์ ํ๊บผ๋ฒ์ ๋ฐ์ํ ๋๋ develop ๋ธ๋์น์ ์ฐ์ ๋ฐ์ํด์ผ ํฉ๋๋ค.
develop์์ ๋จผ์ ๋ฐ์ํ commit์ด ์์ ์ ์ธ์ง ํ์ธํฉ๋๋ค.
git cherry-pick์ ํ์ฉํ๋ฉด ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ฝ๊ฒ backport ํ ์ ์์ต๋๋ค.
conflict ๋ฐ์ ์์๋ ์์ ํ PR์ ์์ฑํฉ๋๋ค.
backport ๊ณผ์ ์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์์ ํ๊ณ , ๊ด๋ จ ๋ด์ฉ์ JIRA์ ๊ธฐ๋กํฉ๋๋ค.
backport PR ์์ฑ ์ ๋ค์์ ์ฐธ๊ณ ํฉ๋๋ค.
PR ์์ฑ ์ PR ์ ๋ชฉ ๋ง์ง๋ง์ develop์ ๋ฐ์๋ PR์ ๋ฒํธ๋ฅผ ํจ๊ป ๊ธฐ๋กํฉ๋๋ค.
์์) [CBRD-OOOOO] Fix this issue: develop์ ๋ฐ์ํ๋ PR, #235 [CBRD-OOOOO] Fix this issue (#235) : release/10.2์ ๋ฐ์ํ๋ PR
PR ๋ด์ฉ์๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ณธ PR์ ๋ฒํธ๋ฅผ ๊ธฐ๋กํฉ๋๋ค. backport ๋ค์ PR ๋ฒํธ๋ ์๋์ ์ผ๋ก github์์ ๋งํฌ๋ก ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
backport ์ JIRA์ ์ ๋ฐ์ดํธํด์ผ ํ ๋ด์ฉ์ ๋ค์์ ์ฐธ๊ณ ํฉ๋๋ค.
QA ์ด๊ด ์
Planned Version(s) ์ค ์ต์ ๋ฒ์ (develop) ๊ณผ backport ๋์ ๋ฒ์ ์ ๋ํด ๋ชจ๋ PR ์์ฑ
๊ฐ PR์ ๋ํด ์ฝ๋ ๋ฆฌ๋ทฐ ํ ๋จธ์ง ์๋ฃ
Git branch๋ ํ๋์ ์ํํธ์จ์ด์ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋์์ ๋ค์ํ ์์ ์ ์งํ ํ ์ ์๋ ์ ์ฉํ ๋๊ตฌ์ ๋๋ค. ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ์์ญ์์ ์ฌ๋ฌ ์ฉ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค.
Github์ ํ๋ก์ ํธ๋ค์ ๋๋ถ๋ถ ๋ช ๊ฐ์ง ๋ธ๋์น์ ์ฉ๋๋ฅผ ์ ํด๋๊ณ ์ด์ํ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด develop ๋ธ๋์น๋ ์ต์ ๊ฐ๋ฐ ์ฌํญ์ ๊ณ์ ๋ด๊ณ , master ๋ธ๋์น๋ ์์ ํ ๋ ๋ฒ์ ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ๊ฐ ๋ธ๋์น์ ์ฉ๋๋ฅผ ์ ํ๋ ๋ฐฉ์์ผ๋ก ํ์ฉํ์ฌ ์คํ์์ค ํ๋ก์ ํธ๋ฅผ ์ด์ํ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ๋ค์ด ์์ต๋๋ค. ๊ทธ ์ค CUBRID๋ ๋ง์ ์คํ์์ค ํ๋ก์ ํธ์์ ๋์ ํ๋ Vincent Drissen ๋ธ๋์น ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์ด์ํ๊ณ ์์ต๋๋ค.
Vincent Drissen ๋ชจ๋ธ(์ดํ VD ๋ชจ๋ธ)์์๋ ์๊ตฌ์ ์ผ๋ก ์ ์ง๋๋ develop, master ๋ธ๋์น์ ์์ ๋ธ๋์น์ธ release, feature, hotfix ๊ฐ ์กด์ฌํฉ๋๋ค. VD ๋ชจ๋ธ๊ณผ์ ์ฐจ์ด์ ์ CUBRID์์๋ ์ด์ ๋ฒ์ ์ ๋ฆด๋ฆฌ์ฆ๋ ์ ์ง๋ณด์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด์ ๋ฒ์ ์ ๋ฆด๋ฆฌ์ฆ ๋ธ๋์น๋ ์๊ตฌ์ ์ผ๋ก ์ ์งํฉ๋๋ค. (e.g. release/10.2, release/11.0) ์๋ฅผ ๋ค์ด develop ๋ธ๋์น์์ ์ต์ ๋ฒ์ ์ธ 11.4 ๋ฒ์ ์ ๊ฐ๋ฐํ๊ณ ์๋๋ผ๋, release/10.2๋ผ๋ ๋ธ๋์น๋ 10.2.2, 10.2.3 ๋ง์ด๋ ๋ฒ์ ๋ฆด๋ฆฌ์ฆ๋ฅผ ์ํด ๊ณ์ ์ ์งํฉ๋๋ค.
VD ๋ชจ๋ธ์์ ์ต์ ๋ฒ์ ๋ฆด๋ฆฌ์ฆ ๊ณผ์ ์์ ์์์ ์ผ๋ก ์์ฑํ๋ release ๋ธ๋์น์ ๋์ผํ ์ญํ ์ ํ๋ pre-release ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค. ์์ธํ ์ค๋ช ์ ์ ์ฐธ์กฐํฉ๋๋ค.
ํ๋์ Pull Request๋ก ๊ฐ๋ฐ์ ์๋ฃํ๊ธฐ ํ๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ํผ์ณ ๋ธ๋์น๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ํผ์ณ ๋ธ๋์น์ ๋ํ ์ค๋ช ์ ๋ค์ ๋ณ๋์ ์น์ ์์ ๊ธฐ์ ํฉ๋๋ค.
Git์ ์ ์ฅ์์ ๊ด๊ณ์์ด ๋ธ๋์น๋ง์ ๊ธฐ์ค์ผ๋ก ์์ ํ๋ค๊ณ ์ดํดํ๋ฉด ์ฝ์ต๋๋ค. ๋ฐ๋ผ์ ํ๋ธ๋ฆฌ๋ ๋ฉ์ธ์ ์ฅ์์ forkํ ๋ด ์ ์ฅ์ ๊ฐ์ sync๋ฅผ ๋ง์ถ๋ ์์ ์ ํ์ง ์์๋ ๋ฉ๋๋ค. ๊ฐ๋ฐ์ ์งํํ๊ธฐ ์ ์ฝ๋๋ฅผ upstream์ผ๋ก๋ถํฐ ๋ฐ์ ํ ๋ธ๋์น๋ฅผ ๊ฐ์ ธ์ ์์ ์ ์์ํ๊ณ , ๊ฒฐ๊ณผ๋ฌผ์ origin์ ์ฌ๋ฆฌ๋ฉด ๋ฉ๋๋ค.
๋ค์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฐธ๊ณ ํ ์ ์์ต๋๋ค.
# 1. feature ๋ธ๋์น ์์ฑ
git remote add upstream
http://github.com/cubrid/cubrid
git fetch upstream
git checkout -b feature/my_feature upstream/develop
git push -u upstream feature/my_feature
# 2. github์์ ์ฌ๋ฌ ๋ฒ์ PR
git fetch upstream
git checkout -b CBRD-OOOOO upstream/feature/my_feature
# many commits (๊ฐ๋ฐ ์งํ)
git push -u origin CBRD-OOOOO
# PR ์์ฑ ํ ์ฝ๋ ๋ฆฌ๋ทฐ
# 2. ๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต == ์ฌ๋ฌ ๋ฒ์ ๋ฆฌ๋ทฐ ๋ผ์ด๋
# 3. develop๊ณผ sync by merge (sync๋ฅผ ์ํ ์ปค๋ฐ์ PRํ์ง ์์)
git checkout feature/my_feature
git fetch upstream
git merge upstream/feature/my_feature // should be fast-forward merging
git merge upstream/develop
git push upstream feature/my_feature
# 2. ๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต == ์ฌ๋ฌ ๋ฒ์ ๋ฆฌ๋ทฐ ๋ผ์ด๋
git push origin CBRD-OOOOO
# CBRD-00000์ ๋ํ PR ์์ฑ๊ฐ๋ฐ์๋ ํด๋น JIRA ์ด์์ PR ๋ฐ์๋ ๋ฒ์ ์ Fixed version(s) ๊ธฐ๋ก
QA ์ด๊ด
โResolvedโ ์ํ๋ก ๋ฐ๊พธ๊ธฐ
QA๋ ํ ์คํธ ์๋ฃ ํ ์ด์๋ฅผ โCloseโ ์ํ๋ก ๋ณ๊ฒฝ
http://jira.cubrid.org/browse/CBRD-OOOOO
backport #235
#git ๋ช
๋ น์ด ์์
git checkout develop
git log // backport ํ commit id ์ฐพ๊ธฐ
git checkout release/10.2
git cherry-pick <commit-id>ํ๋ธ๋ฆฌ๋์ ๋น๋ ๋ฒํธ๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๊ฐ์ง๋๋ค.
Major.Minor.Patch.Revision
e.g) 11.1.0.0512.2d9a03248
Patch๋ ์ด์ ๋ฆด๋ฆฌ์ฆ ์์ ๋ถํฐ commit count๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฆ๊ฐํฉ๋๋ค.
Revision์ ๋น๋ ์์ ์ commit hash๊ฐ ์ ๋ ฅ๋ฉ๋๋ค.
Major์ Minor ๋ฒ์ ๋ฆด๋ฆฌ์ฆ ์ ๋ค์์ ์์์ ๊ฐ์ด ์ฝ๋ ๋ค์์ ๊ฐ์ง๋๋ค.
๊ณผ์ผ ์ด๋ฆ
elderberry (11.1)
damson (11.0)
cherry (10.2), cherry sherbet
banana (10.0), banana pie (10.1)
๋ฒ์ ๋ฒํธ๋ ํญ์ ๋ฐ๋ ์ ์์ต๋๋ค.
๋ฆด๋ฆฌ์ฆ ํ์๋ ์ฝ๋ ๋ค์ ๋์ ๋ฒ์ ๋ฒํธ๋ก ๊ด๋ฆฌํฉ๋๋ค.
Major ๋ฒ์ ๋ฆด๋ฆฌ์ฆ ์์ ๋ค์๊ณผ ๊ฐ์ ๋ง์ผ์คํค์ ๊ฐ์ง๋๋ค.
Code Freeze
CC (Code Complete): All major changes are completed
ZAB (Zero Active Bug): All triaged issues are resolved
ZRB (Zero Resolved Bug): All resolved issues are closed
FTC (Full Test Complete): Full tests for release are succeed
GA (General Availability build): Distribute the release version
Code Freeze ํ develop๋ก๋ถํฐ pre-release ๋ธ๋์น๋ฅผ ์์ฑํ์ฌ ๊ด๋ฆฌํฉ๋๋ค.
ZRB ๋ฌ์ฑ์ ์ํด pre-release ๋ธ๋์น์ major change์ ๋ํ regression ํจ์น๋ฅผ ํฉ๋๋ค.
ZRB์์ release๋ฅผ ์ํ full test๋ฅผ ์งํํฉ๋๋ค.
FTC์์ release๋ฅผ ์ํ ํ ์คํธ๋ก๋ถํฐ regression ํด๊ฒฐ์ ์ํด pre-release ๋ธ๋์น์ ์ ์ฉํ major change์ ๋ํ ํจ์น๋ฅผ develop์ผ๋ก port ํฉ๋๋ค.
FTC ์ด์ ์ ํจ์น๊ฐ ์ถฉ๋ถํ ๊ฒ์ฆ ๋์๋ค๋ฉด ๋ฏธ๋ฆฌ develop์ผ๋ก port ํ ์ ์์ต๋๋ค.
GA ์ pre-release๋ release๋ก ๋ง๋ค๊ณ ์ ๊ฑฐํฉ๋๋ค.
์ต์ ๋ฉ์ด์ ๋ฒ์ ์ด ์๋ ์ด์ ๋ฒ์ ์ ๋ฆด๋ฆฌ์ฆ์ ํซํฝ์ค์ ๊ฒฝ์ฐ pre-release ๋ธ๋์น๋ฅผ ์์ฑํ์ง ์๊ณ , develop์ผ๋ก๋ถํฐ backport ํ full test๋ฅผ ์งํํ๊ณ ๋ฆด๋ฆฌ์ฆํฉ๋๋ค.
git remote add upstream https://github.com/CUBRID/cubrid.git
git remote -v
#====
# origin http://github.com/hgryoo/cubrid (fetch)
# origin http://github.com/hgryoo/cubrid (push)
# upstream http://github.com/cubrid/cubrid (fetch)
# upstream http://github.com/cubrid/cubrid (push)
git fetch upstream
# ์์
ํ ์๋ก์ด ๋ธ๋์น ๊ฐ์ ธ์ค๊ธฐ, upstream์ผ๋ก๋ถํฐ ๋ธ๋์น ์์ฑ!
# git push๋ก ์๋ชป ๋ฐ์๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด
# ์๋ ๋ ๋ช
๋ น์ด๋ ํญ์ ํจ๊ป ์คํํด์ผ ํฉ๋๋ค.
git checkout -b CBRD-55555_my_work upstream/develop
git push -u origin CBRD-55555_my_work
# ์์
ํ๊ธฐ
git add ...
git commit โฆ
# ์์ค๋ฅผ ์ฌ๋ฆด remote ์ด๋ฆ๊ณผ ๋ธ๋์น ์ด๋ฆ์ ํญ์ ์ ์ด์ค๋๋ค
git push origin CBRD-55555_my_work
# upstream์ develop์ ๋ด์ฉ์ ๋ฐ์ํ๊ณ ์ถ์ ๋
git fetch upstream
git merge upstream/developํ๋ธ๋ฆฌ๋์ ๊ธฐ์ฌ์๋ฅผ ์ํ ์ปค๋ฎค๋์ผ์ด์ ์ฑ๋๋ก Reddit (์๋ฌธ)๊ณผ ํ๋ธ๋ฆฌ๋ Q&A ๊ฒ์ํ (๊ตญ๋ฌธ)์ด ์์ต๋๋ค. ํ๋ธ๋ฆฌ๋ Q&A๋ ๋๋ถ๋ถ ์ผ๋ฐ ์ฌ์ฉ์๋ฅผ ์ค์ฌ์ผ๋ก ๋ฒ๊ทธ ๋ฆฌํฌํธ์ ์ง๋ฌธ ์์ฃผ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๊ทธ ์ธ์ ์ด๋ฉ์ผ, Stack Overflow ๋ฑ์ ์ ๋ง์ ์ปค๋ฎค๋์ผ์ด์ ์ฑ๋์ผ๋ก ๊ธฐ์ฌ์ ๋ํ ์ง๋ฌธ์ด๋ ์ ์์ ๋ฐ์ ์ ์์ง๋ง ๊ณต์์ ์ธ ์ปค๋ฎค๋์ผ์ด์ ์ฑ๋ (cubrid.com ๋๋ reddit)์์ ์ ๋ํ์ฌ ์ด์ด๊ฐ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์๋ก์ด ๊ฐ๋ฐ ์๊ฑด์ ์์ํ๊ฑฐ๋ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ์ Jira ์ด์๋ฅผ ์์ฑํฉ๋๋ค. ์ด์ ์์ฑ ์ ์ฐจ ๋ฐ ์์ฑํ ํญ๋ชฉ์ ์ด์ ์์ฑ ์ ์ฐจ์์ ์ค๋ช ํฉ๋๋ค. ์ด์์ ์ด๊ธฐ ์ํ๋ โOPENโ์ผ๋ก ์ค์ ๋์ง๋ง, Triage๋ฅผ ํตํด ์น์ธ์ ๋ฐ๊ธฐ ์ํด์๋ ์ด์ ์์ฑ ์๋ฃ ํ ๋ฉ์ธํ ์ด๋์์ ์ด์๋ฅผ "To Triage" ๋ฒํผ์ ๋๋ฌ ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋์๊ฒ ์ ๋ฌํด์ผ ํฉ๋๋ค.
์ดํ ํ์์ ๋ฐ๋ผ ๊ฐ ์ํ๋ก๋ถํฐ ๋ค์ โOPENโ ์ํ๋ก ๋๋์๊ฐ ์ ์์ต๋๋ค. ์ด์ ์งํ ์ค ์ด๋ค ์ํ (CONFIRMED, ANALYSIS, DEVELOP, HANDOVER, RESOLVED)์์๋ ํด๋น ์ด์์ ์ฌํ์ธ์ด ํ์ํ ๊ฒฝ์ฐ โAsk Reconfirmationโ ๋ฒํผ์ ๋๋ฌ ์ด์์ ์ํ๋ฅผ โOPENโ ์ผ๋ก ๋๋๋ฆฌ๋ฉด ์๋์ผ๋ก ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋์๊ฒ ์ด์๊ฐ ํ ๋น๋ฉ๋๋ค. ๋ํ, ์๋ฃ๋ (CLOSED) ์ด์๋ ์ถํ์ ๋ฌธ์ ๊ฐ ๋ฐ์๋๋ฉด โReopen Bugโ ๋ฒํผ์ ๋๋ฌ ํด๋น ์ด์์ ์ํ๋ฅผ โOPENโ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ด์๋ฅผ ์์ฑํ ๋์๋ ํ๋์ ์ด์๋ก ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ์ง ๋ง๊ณ , ๊ฐ๊ธ์ ๋ฌธ์ ๋ฅผ ์ชผ๊ฐ์ด ์ฌ๋ฌ ์ด์๋ก ๋๋์ด ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
1. JIRA (jira.cubrid.org)์ ๋ก๊ทธ์ธ ํ ์๋จ์ ์ค๋ ์ง์ โCREATEโ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
2. ์๋ก ์ด๋ฆฐ โCREATE Issueโ ์ฐฝ์์ ๊ฐ ํ๋๋ฅผ ๋ค์ ํ์ ์ค๋ช ์ ๋ง๊ฒ ์์ฑํ๊ณ ํ๋จ์ โCreateโ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
Component๋ ๋ชจ๋ ๋จ์๋ก ์ค์ ํฉ๋๋ค. Component๋ ๊ณ์ธต ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋๋ฉฐ ์ ์ ์ธ๋ถํ ๋ฉ๋๋ค. ์ด์์์ ๋ค์์ Component๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ์์ ํญ์ ๊ฐ ํ๋ก์ ํธ ๋ณ ํ๋ธ๋ฆฌ๋ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๋ Component์ ๋๋ค. ํ์์ ๋ณด๋ ๊ฒ๊ณผ ๊ฐ์ด CUBRID๋ SM, QP, JavaSP, DS, Utility ๋ฑ์ ํฌํจํ๊ณ , ๊ฐ ๋ชจ๋ ๋ํ ๋ค์์ ๋ชจ๋์ ํฌํจํฉ๋๋ค.
์ด์ ์์ฑ ์, ํด๋น ์์ ์ ์ ์ ์๋ ์ฐ๊ด ๋ชจ๋์ ์ ํํฉ๋๋ค. ์ด์๋ฅผ ๋ถ์ํ๋ ๊ณผ์ ์์๋ ํด๋น ์ด์์ ์ฐ๊ด๋ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ถ๊ฐ ์ ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด SM ๋ชจ๋์์ Buffer Manager๋ฅผ ๊ฐ์ ํ๋ ์ด์์ธ ๊ฒฝ์ฐ, ์ด์ ์์ฑ ์ CUBRID, SM, Buffer๋ฅผ ์ ํํ ์ ์๊ณ , ์ด์ ์งํ ์ค์ File, Lock ๋ชจ๋์ ์ํฅ์ ์ฃผ๋ ๊ฒฝ์ฐ ์ถ๊ฐ ์ ํํ ์ ์์ต๋๋ค.
CTE, TDE, JSON, Java SP๋ฑ ์ฌ๋ฌ ๋ชจ๋์ ์ํฅ์ ์ฃผ๋ ํ๋ก์ ํธ์ธ ๊ฒฝ์ฐ ์๋ก์ด component๋ฅผ ์์ฑํ์ฌ ์ค์ ํ ์ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋์๊ฒ ์์ฒญํ์ฌ ์๋ก์ด component๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ด์ ์์ฑ ์ ์ด์ ํ์ ์ ๋ฐ๋ผ ๋ค์์ ํ ํ๋ฆฟ์ ๋ณต์ฌํ๊ณ , ํ์ํ ํญ๋ชฉ์ ์์ฑํฉ๋๋ค. > ํ์ํ ๊ฒฝ์ฐ ์น์ ์ ์ถ๊ฐ ๊ฐ๋ฅ > ํ ํ๋ฆฟ์ ์น์ ์ ํ์ ์๋ ๊ฒฝ์ฐ ์ ๊ฑฐํ์ง ์๊ณ N/A๋ก ๋จ๊ฒจ๋๊ณ ์์ฑ > ์์ง ์์ฑํ์ง ๋ชปํ ํ๋์ ๋ํด์๋ TBD๋ก ์ ์ด๋๊ณ ํ์ ๋๋ฉด ๋ด์ฉ์ ์์ฑ
ํ ํ๋ฆฟ์ ์ด์ ํ์ ์ ๋ฐ๋ผ ์ธ๊ฐ์ง ํํ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Description: ์ด์ ์ค๋ช
Test Build: Repro, Actual Result์ ๋์ผํ ํ์์ ๋ณด์ฌ์ฃผ๋ ๋น๋ ๋ฒ์ ์ commit ๋ฒํธ๊น์ง ์์ธํ ๊ธฐ์
ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด ๊ธฐ์
ํ ์ ์์ต๋๋ค:
CUBRID-11.0.0.0248-b53ae4a
JIRA ํ๋์ Affected version/s์ Major์ Minor ๋ฒ์ ๊น์ง๋ง ํ์ํ๋ ๋ฐ๋ฉด, Patch์ Revision์ ํฌํจํ์ฌ ์ค์ ๋ก ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ๊ตฌ์ฒด์ ์ธ ๋ฒ์ ๋ช
์ ์
๋ ฅํด์ผํฉ๋๋ค.
๋ฒ์ ๋ช
์ ๊ท์น์ ์น์
์ ์ฐธ๊ณ ํฉ๋๋ค.
๋น๋ํ OS์ ๋ฒ์ ๋ ํจ๊ป ๋ช
์ํ ์ ์์ต๋๋ค.
์์)
Description: ์ด์์ ๋ํ ์ค๋ช ์ ์ ์ต๋๋ค.
Specification Changes : ๋ณ๊ฒฝ๋ ์คํ์ ์ ๋ฆฌํ์ฌ ์์ฑํฉ๋๋ค. QA ํ ์คํธ ์ ์, ๋งค๋ด์ผ ์์ฑ ๋ฑ์์ ํ์ฉํ ์ ์์ต๋๋ค.
Implementation: ์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์์ธ ๋ช ์ธ, ๊ตฌํ ์ปจ์ ๋ฐ ์์ธ๋ฅผ ์์ฑํฉ๋๋ค.
์์)
Description: ์์ ๋ด์ฉ์ ๋ํ ๋ชฉ์ ๊ณผ ์ค๋ช ์ ์ ์ต๋๋ค.
โ์ด์ ๋ด์ฉ ํ ํ๋ฆฟโ์ ์ฐธ๊ณ ํ์ฌ ์์ฑํฉ๋๋ค.
Affects version/s
์ด์ ์์ฑ์๊ฐ ๋ถ์ ๊ณผ์ ์์ ๋ฒ๊ทธ๋ ๋ฌธ์ ๋ฅผ ์ฐพ์ ๋ฒ์ ์ ๊ธฐ๋กํฉ๋๋ค. * ์ค์!: ๋ฒ๊ทธ์ด์ ๋ฑ๋ก ์ ์ต์ develop ๋ฒ์ ๋ฟ๋ง ์๋๋ผ ๋ฆด๋ฆฌ์ฆ๋ ์ด์ ๋ฒ์ ์ ๋ํ ํ์ธ์ด ํ์ํฉ๋๋ค.
๋ง์ฝ ์ด์ ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ์์๋ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ค๋ฉด Affectd Version(s) ํญ๋ชฉ์ ํด๋น ๋ฒ์ ์ ์ถ๊ฐํฉ๋๋ค.
Label
์์ ๋กญ๊ฒ ์ค์ ํ ์ ์์ต๋๋ค.
* ๋ฉ์ธํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ ๋ ์ด๋ธ: cubrid.com, Good First Issue
์ ์ด์ ํ์ ์ ํด๋นํ๋ ๋ฒ์ฃผ๊ฐ ์์ ๊ฒฝ์ฐ ์ฌ์ฉํ์ง๋ง, ๊ถ์ฅํ์ง ์์ต๋๋ค. (์ฌ์ฉ ์ : release)
Sub-task
์ด์ ๋ด๋ถ์ ์์ฑ๋๋ ์์ ๋จ์์ ์ด์์ผ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค.
์์ ์ด์ ํ์ ์ sub issue๋ก ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
Module Component
ADO.NET CCI GO JDBC Node.js ODBC OLEDB PDO Perl PHP Python Ruby
Module Component
CM Server CUBRID Manager CUBRID Migration Toolkit CUBRID Monitoring Query Browser Tools development
Expected Result: ๊ธฐ๋ ๊ฒฐ๊ณผ (๊ณ ์ณ์ ธ์ผ ํ ์์ ๊ฒฐ๊ณผ)
Actual Result: ํ์ฌ ๊ฒฐ๊ณผ (๋ฌธ์ ๊ฐ ์๋ ๊ฒฐ๊ณผ)
Additional Information: ์ถ๊ฐ๋ก ๋ฒ๊ทธ ๋ถ์๊ณผ ์ดํด์ ๋์์ ์ฃผ๊ธฐ ์ํด ์ฐธ๊ณ ํ ์๋ฃ๋ ๋ด์ฉ์ด ์๋ค๋ฉด ์ ์ด์ค๋๋ค.
Definition of done: ์ด์๋ฅผ ์๋ฃํ๊ธฐ ์ํด ์ด๋ ํ ๋ฐฉ๋ฒ์ผ๋ก ๊ฒ์ฆํ ์ ์์์ง๋ฅผ ์์ฑํฉ๋๋ค. ๋ค์ ์์์ ๊ฐ์ด ๊ธฐ์ ํ ์ ์์ต๋๋ค.
Acceptance Criteria๋ฅผ ๋ง์กฑ์ํจ๋ค.
QA ํ ์คํธ๋ฅผ ํต๊ณผํ๋ค.
Field
Description
Project
ํ๋ก์ ํธ ๋ฒ์ฃผ๋ฅผ ์ ํํฉ๋๋ค.
CBRD: CUBRID CAS, DB SERVER
APIS: CCI, JDBC ๋ฑ Driver
CUBRIDMAN: CUBRID ๋งค๋ด์ผ
TOOLS: CUBRID Manager, CUBRID Migration Tool
CUBRIDQA: QA ์์คํ , QA ํ ์คํธ ์ผ์ด์ค
Issue Type
์ด์์ ์ฑ๊ฒฉ์ ๋ง๋ ํ์ ์ ์ ํํฉ๋๋ค.
์์ธํ ๋ด์ฉ์โIssue Typeโ ์น์ ์ ์ฐธ๊ณ ํฉ๋๋ค.
Summary
์ด์์ ์ ๋ชฉ์ ์ ๋ ฅํฉ๋๋ค.
Priority
๊ธฐ๋ณธ๊ฐ์ธ Minor๋ก ํญ์ ์ง์ ํฉ๋๋ค.
๋ฉ์ธํ ์ด๋๊ฐ Triage ์์ ํ์ํ๋ค๋ฉด ๋ณ๊ฒฝํฉ๋๋ค.
Components
๋ชจ๋ ๋จ์ ๋๋ ํ๋ก์ ํธ ๋จ์์ ๋ฒ์ฃผ๋ฅผ ์ง์ ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ โComponentโ ์น์ ์์ ์ค๋ช ํฉ๋๋ค.
Type name
Description
Correct Error
๋ฒ๊ทธ ๋๋ ์๋ฌ๋ฅผ ์์ ํ๋ ์ด์์ ๋๋ค.
Improve Function/Performance
๊ธฐ์กด์ ๊ธฐ๋ฅ์ ๊ฐ์ ํ๊ฑฐ๋ ์ฑ๋ฅ์ ํฅ์์ํค๋ ์ด์์ ๋๋ค.
Development Subject
์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ์ด์์ ๋๋ค.
Internal Management
๋ด๋ถ ๊ด๋ฆฌ๋ฅผ ์ํ ์ด์์ ๋๋ค.
์ธ๋ถ ๊ธฐ์ฌ์ ๊ด๋ จ์๋ ๋ณ๊ฒฝ์ผ ๊ฒฝ์ฐ์ ์ฌ์ฉํฉ๋๋ค.
์) ํ๋ก๊ทธ๋จ ๋๋ ์ฝ๋ ๋ด ๋ฒ์ ๋ณ๊ฒฝ 10.2.0 -> 11.0.0
Refactoring
๋ถํ์ํ ์ฝ๋ ์ ๋ฆฌ, ์ฝ๋ ๊ตฌ์กฐ ๋ฐ repo ๋ถ๋ฆฌ ๋ฑ์ ๋ณ๊ฒฝํ๋ ์ด์์ ๋๋ค.
Category Component
QP SM DS Utility
Module Component
Build
CI
Coding Style
Community
Document
Broker/CAS
Server Communication
CSQL
Query Parser Query Semantic Check Query Rewriter
Query Optimizer XASL Generator
Query Executor
Scan Manager
Schema Manager
Java SP
Backup/Restore
Buffer pool Catalog Disk/File DWB FBO
Heap Index Locator
Lock Log/Recovery
MVCC TDE Transaction
Vacuum
Failover HA Heartbeat Logcopier Logapplier
Replication
Description
Test Build
Repro
Expected Result
Actual Result
Additional Information
Description
Specification Changes
Implementation
Acceptance Criteria
Definition of done
Description

Description
Task
Pull Request์ ์ ๋ชฉ์๋ ํญ์ ๊ด๋ จ๋ JIRA ์ด์ ๋ฒํธ๋ฅผ ๊ธฐ์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฒํธ ์ธ์ JIRA์ ์ ๋ชฉ PR์ ์ ๋ชฉ์ด ๋์ผํ ํ์๋ ์์ต๋๋ค. Pull Request์ ๋ด์ฉ์ ๊ฐ์ฅ ์ ์ค๋ช ํ ์ ์๋ ์ ๋ชฉ์ด๋ฉด ์ข์ต๋๋ค.
Pull Request์ ์ค๋ช ์ฒซ ์ค์๋ ํญ์ ๊ด๋ จ๋ JIRA์ ๋งํฌ๋ฅผ ์ฒจ๋ถํด์ผ ํฉ๋๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํด JIRA์์ ์ค๊ณ์ ๊ด๋ จํ ๋ด์ฉ์ ์ฐธ์กฐํ๊ธฐ ์ํจ์ ๋๋ค. ๋ํ, ์ด์๋ ์ค๊ณ ๋ฌธ์์์ ๋ด์ง ๋ชปํ ๊ตฌํ ๋ํ ์ผ (ํด๋์ค, ํจ์, ํน์ ๋ก์ง) ์ ๋ชฉ์ , ๊ตฌํ, ์ฐธ๊ณ ์ฌํญ ๋ฑ์ ์์ฑํ๋ฉด ์ดํ ์ฝ๋ ๋ถ์์ ๋์์ด ๋ฉ๋๋ค.
[CBRD-OOOOO] Pull Request Title
Description
Purpose
N/A
Implementation
N/A
Remarks
N/A
Purpose: PR์์ ๋ฐ์ํ๋ ค๋ ์ฝ๋์ ์ค๋ช , ๋ชฉ์ ์ ๊ฐ๋จํ๊ฒ ๊ธฐ์ ํฉ๋๋ค.
Implementation: JIRA ์ด์๋ ์ค๊ณ์์ ์์ฑ๋ ์ค๊ณ ์ธ์ ๋ฐ์ํ ์ฝ๋์ ๊ด๋ จํ์ฌ ๊ตฌํํ๋ ๋ก์ง, ํด๋์ค, ํจ์ ๋ฑ์ ์ค๋ช ์ ์์ธํ ์ค๋ช ํ ํ์๊ฐ ์๋ค๋ฉด ๊ธฐ์ ํฉ๋๋ค.
Remarks: ๋๋จธ์ง ์ฐธ๊ณ ์ฌํญ์ ์ ์ต๋๋ค.
Pull Request์ ์ฐ์ธก์๋ assignees, reviewers, labels, projects, milestone์ ์ค์ ํ ์ ์์ต๋๋ค. Pull Request ์์ฑ ์ assignees๋ง ์ ๋ ฅํ๊ณ ๋๋จธ์ง ํ๋๋ ์ฌ์ฉํ์ง ์์ต๋๋ค. reviewers๋ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ๊ธฐ ์ ์ ๋ฑ๋กํฉ๋๋ค. ๋ค์์ ์ฝ๋ ๋ฆฌ๋ทฐ ์น์ ์ ์ฐธ์กฐํฉ๋๋ค.
์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ง์ /์์ฒญํ๊ธฐ ์ ๋ฆฌ๋ทฐ์ด์๊ฒ ์ค๊ณ ๋์์ธ ๋ฆฌ๋ทฐ๋ฅผ ์๋ฃํด์ผ ํฉ๋๋ค. ์ฝ๋ ๋ง์ผ๋ก๋ ๋ณ๊ฒฝ์ ์๋์ ๋ด์ฉ์ ๋ช ํํ ํ์ ํ๊ธฐ ํ๋ค๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ผ์ ๋์์ธ ๋ฌธ์ (Concept, Architecture) ๋ฅผ ํ๋ก์ ํธ ๊ตฌ์ฑ์์๊ฒ ์ฝ๋ ๋ฆฌ๋ทฐ ์ด์ ์ ๊ณต์ ํด์ผ ํฉ๋๋ค.
JIRA์ ๋์์ธ ๋ฌธ์๋ฅผ ๊ณต์
๋ฌธ์์ ํ์์ ์์
๋ฆฌ๋ทฐ์ด๊ฐ ์ค๊ณ ๋์์ธ์์ ๋ ์ดํด๊ฐ ํ์ํ ๊ฒฝ์ฐ ์๋ฃ ์์ฒญ ๊ฐ๋ฅ
์ค๊ณ ๋์์ธ ๋ฆฌ๋ทฐ๋ฅผ ์๋ฃํ๋ฉด, ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํฉ๋๋ค. PR ์ฐ์ธก์ Reviewers๋ฅผ ์ค์ ํ์ฌ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ณ๊ฒฝ์ด ํฌ์ง ์์ ๊ฐ๋จํ ๋ฒ๊ทธ ์์ ์ด๋ ๊ธฐ๋ฅ ๊ตฌํ์ ์ค๊ณ ๋์์ธ ๋ฆฌ๋ทฐ์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋์์ ์งํํ๋ ๊ฒ๋ ๊ด์ฐฎ์ต๋๋ค.
์คํ ๋ณ๊ฒฝ์ด ์์
๊ธฐ๋ฅ ๋์์ ๋ณ๊ฒฝ์ด ์์
๊ท๋ชจ๊ฐ ํฌ์ง ์์ ๋ฆฌํฉํ ๋ง
ํจ๊ณผ์ /ํจ์จ์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํด Github PR์ ์ฌ๋ฌ ์๋ํ ๋๊ตฌ๋ค์ ๋์ ํ๊ณ ์์ต๋๋ค. ์ด ๋๊ตฌ๋ค์ ์ฝ๋์ ํ์ง์ ๋์ด๊ณ ๋ฆฌ๋ทฐ์ด๊ฐ ๋จ์ ์ค์๊ฐ ์๋ ์ค๊ณ ๋์์ธ๊ณผ ๋ก์ง ๋ฌธ์ ์ ์ง์คํ ์ ์๋๋ก ๋์์ค๋๋ค.
Pull Request ํ๋จ์ ๊ฐ ์๋ํ ๋๊ตฌ์ ์ฑ๊ณต์ฌ๋ถ๊ฐ ํ์๋๊ณ , Details๋ฅผ ํตํ์ฌ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ํ๋๋ผ๋ ์คํจ๊ฐ ์๋ค๋ฉด PR์ ๋ฐ์ํ๋ โSquash and Mergeโ ๋ฒํผ์ด ๋นํ์ฑํ ๋ฉ๋๋ค.
license: ์ฌ๋ฐ๋ฅธ ํํ์ ๋ผ์ด์ผ์ค ํค๋ ์ฃผ์์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํฉ๋๋ค. ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ์คํจํ๊ณ , ์ด๋ค ํ์ผ์ ํ์ธํ๋ค ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋์๋์ง๋ Details๋ฅผ ํตํด ํ์ธํ ์ ์์ต๋๋ค.
pr-style: ๋ชจ๋ Pull Request (PR)๋ค์ด ๊ฐ๊ฐ์ JIRA ์ด์์ ์ฐ๊ฒฐ๋์ด์ผํ๋ค๋ ๊ท์น์ ๊ฐ์ง๊ณ ์๊ณ , ์ด ์ด์ ๋ฒํธ๊ฐ PR ์ ๋ชฉ์ ์๋ถ๋ถ์ ๋ช ์๋์ด์ผ ํฉ๋๋ค. pr-style์ ์ด๋ฅผ ํ์ธํ๊ณ ๊ท์น์ ์ด๊ฒผ๋ค๋ฉด ์คํจํฉ๋๋ค.
code-style: ์ผ๊ด์ฑ ์๋ ์ฝ๋ ์ ์ง๋ฅผ ์ํด ์ ์๋ ์ฝ๋์คํ์ผ์ ๋ฐ๋ฅด๋์ง ํ์ธํฉ๋๋ค. ์ฝ๋ ์คํ์ผ์ ์ฝ๋ ํฌ๋งทํ ๋๊ตฌ๋ค์ ์ด์ฉํ์ฌ ์ ์ ๋๋ฉฐ, code-style์ ์ด ๋๊ตฌ๋ค์ ์ด์ฉํด ์ ํด์ง ๊ท์น์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐ๋ฅด๋์ง ํ์ธํ๊ณ ์์ ํฉ๋๋ค. ๋ง์ฝ ๊ท์น๊ณผ ๋ค๋ฅด๋ค๋ฉด ์คํจํ๊ณ PR์ suggestion์ ํตํด ๋ฆฌํฌํธ ํฉ๋๋ค. ์ง์ํ๋ ์ธ์ด์ ์ฝ๋ ํฌ๋งทํ ๋๊ตฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
C: GNU Indent 2.2.11
C++: astyle 3.1
Java: google java format 1.7
cppcheck: ์ฌ์ฉ๋์ง ์๋ ๋ณ์, NULL ์ฐธ์กฐ ๋ฑ ๊ฐ๋ฐ์๊ฐ ์ ์ง๋ฅผ ์ ์๋ ๋ง์ ๋ฌธ์ ๋ค์ด ์ ์ ๋ถ์์ ํตํด ๋ฐ๊ฒฌ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ค๋ฅ๋ค์ ์ค์ํ๊ธฐ ์ฝ์ง๋ง ๋ช ๋ฐฑํ์ฌ ๋ฌธ๋งฅ์์ด ์ฝ๋๋ฅผ ์ดํด๋ณด๋ ๊ฒ๋ง์ผ๋ก ์ฐพ์๋ผ ์ ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ์ ๋ฆฌ๋ทฐ์ด๊ฐ ์ผ์ผ์ด ์ฐพ์๋ด๊ณ ์ฝ๋ฉํธ๋ฅผ ๋ค๋ ๊ฒ์ ๋ญ๋น์ ๋๋ค. cppcheck์ ์ด๋ฌํ ๋ฌธ์ ๋ค์ ์ก์๋ ๋๋ค. ์๋ฌ๊ฐ ์์ ๊ฒฝ์ฐ ์คํจํ๊ณ PR์ ์ฝ๋ฉํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌํฌํธ ํฉ๋๋ค. ์ด ๋ ๋ฆฌํฌํธ๋ ์๋ฌ์ ๊ฒฝ๊ณ ์ ๊ฐฏ์์ ๋๋ค. ์์ธํ ๋ด์ฉ์ Details ๋ฅผ ํตํด ํ์ธํ ์ ์์ต๋๋ค. ๋ง์ฝ ์๋ฌ๋ ์๊ณ ๊ฒฝ๊ณ ๋ง ์๋ค๋ฉด ํ ์คํธ๋ ํต๊ณผํฉ๋๋ค.
coverage: ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ํ์ธํ๊ณ , ์์น๊ฐ ๋จ์ด์ง ๊ฒฝ์ฐ ๋ก ์๋ ค์ค๋๋ค.
Build Tests: PR์ด ์ ์ฉ๋ ํ์๋ ๊ฐ์ข ํ๊ฒฝ์์ ์ฌ๋ฐ๋ฅด๊ฒ ๋น๋๊ฐ ์ํ๋๋์ง ํ์ธํฉ๋๋ค.
appveyor/pr: Windows
travis-ci/pr: Ubuntu
circleci: build: CentOS 7
Regression Tests: ์์ค๋ฅผ ๋น๋ํ๊ณ ์ค์ ๋ก ์ฌ๋ฌ SQL ๊ตฌ๋ฌธ์ ์ํํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ฅ๋ค์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋์ง ํ์ธํฉ๋๋ค. ์ด๋ QA Home์์ ํ์ธํ ์ ์๋ ์๋ง์ ํ ์คํธ์ ์ผ๋ถ์ด๋ฉฐ, ๋ณ๊ฒฝ์ฌํญ์ด develop์ ๋ฐ์๋๊ธฐ ์ํ ์ต์ํ์ ์ถฉ์กฑ์๊ฑด์ ๋๋ค. ์ ์ฅ์์์ ํ ์คํธ๋ค์ ํ์ธํ ์ ์์ต๋๋ค.
circleci: test_sql: ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ์ฌ ๊ฐ์ข sql ๋ฌธ๋ค์ ์ํํ๊ณ ๊ธฐ๋ํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋์ง ํ์ธํฉ๋๋ค.
cicleci: test_medium: ์ด๋ฏธ ๋ง์ ํ ์ด๋ธ๋ค๊ณผ ๋ฐ์ดํฐ๋ค์ด ์์ฑ๋์ด ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ข sql ๋ฌธ๋ค์ ์ํํ๊ณ ๊ธฐ๋ํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋์ง ํ์ธํฉ๋๋ค.
Build Tests์ Regression Tests๋ ์ ์ฅ์ ๋ด์ ๋ชจ๋ ๋ธ๋์น์์ ๋์ํฉ๋๋ค.
๋๋จธ์ง ๋๊ตฌ๋ค์ develop, feature/* ๋ฐ ์ผ๋ถ ๋ฆด๋ฆฌ์ฆ ๋ธ๋์น (ํ์ฌ release/11.*)์์๋ง ๋์ํฉ๋๋ค. ํนํ feature ๋ธ๋์น์ ๊ฒฝ์ฐ ์ด๋ฆ ๊ท์น์ ์ ์ฉํด์ผ github check๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํฉ๋๋ค.
์๋ํ ๋๊ตฌ์์ ํต๊ณผ๋์ง ์์ ๋ฐ์ ๋ฒํผ์ด ๋นํ์ฑํ ๋์ด ์๋ ๊ฒฝ์ฐ, CUBRID ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋์ ๋ ผ์ ํ ๋ฉ์ธํ ์ด๋๊ฐ ์ง์ ๋ฐ์ํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ, ์๋ํ ๋๊ตฌ์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๋จ๋๊ฑฐ๋, ์๋ํ ๋๊ตฌ์์ ๋ณด๊ณ ๋ ๋ฌธ์ ๋ฅผ ๋ฌด์ํด๋ ๋๋ค๋ ํฉ์๋ฅผ ๊ฑฐ์น ๊ฒ์ ๋๋ค. ์ด๋ฌํ ์ ์ฑ ์ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์๋ํ ๋๊ตฌ์์ ๊ฒ์ฌํ๋ ๊ฒ์ ๊ธฐ์กด์ ๋์์ ๋ณ๊ฒฝ๋์๋์ง๋ฅผ ํ์ธํฉ๋๋ค. PR์ ์ฝ๋ ๋ณ๊ฒฝ์ด ๊ฐ๋ฐ์์ ์๋์ ์๊ด ์์ด ์คํ ๋ณ๊ฒฝ์ด ๋ฐ์ํ์ ์๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ํ๋ก์ ํธ ๋ฉ์ธํ ์ด๋์๊ฒ ๋จธ์ง ์์ฒญ์ ํ๋ฉด์ ์๋ํ ๋๊ตฌ์์ ์คํจํ ์ฌํญ์ ๋ํด์ ์ปค๋ฎค๋์ผ์ด์ ๊ณผ ๊ฒํ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํฉ๋๋ค.
์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ์ธ cppcheck๋ฅผ ์ฌ์ฉํ๋ฉด ์ค์ ๋ก๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ์๋ฌ(error)๋ผ๊ณ ๋ณด๊ณ ํ๋ false-positive ์ผ์ด์ค๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๊ฐ ๋ณด๊ณ ๋ ์๋ฌ๋ฅผ false-positive๋ผ๊ณ ํ๋จํ ๊ฒฝ์ฐ ๋ฆฌ๋ทฐ์ด์์ ํฉ์๋ฅผ ๊ฑฐ์ณ ํด๋น ์๋ฌ๋ฅผ ๋ฌด์ํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด ๋ค์๊ณผ ๊ฐ์ด cppcheck์ Inline Suppression ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ๋๋ค.
arr[10] = 0; // cppcheck-suppress arrayIndexOutOfBounds
๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฌ๊ฐ ๋ฐ์ํ ๋ผ์ธ์ ์ฃผ์์ผ๋ก suppression ๋ช ๋ น๊ณผ ํํท์๋ฌ๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ cppcheck manual ์ ์ฐธ๊ณ ํฉ๋๋ค.
code-style์ ๊ฒฝ์ฐ C์ C++์ ๋ํด ๋ณ๋์ ๊ท์น๊ณผ ํ์ธ ๋๊ตฌ๋ค์ด ์ฌ์ฉ๋ฉ๋๋ค. ๊ฐ ๋๊ตฌ๋ค์ ํ์ผ ํ์ ์ ํ์ธํ์ฌ ์คํ๋๋๋ฐ, C ํ์ผ์์ C++ ๋ฌธ๋ฒ์ ์ฌ์ฉํ ๊ฒฝ์ฐ์ ์๋ชป๋ ํฌ๋งคํ (formatting)์ ๋ง๊ธฐ ์ํ์ฌ ๋ค์๊ณผ ๊ฐ์ด GNU indent์ control comments ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ๋๋ค.
/* *INDENT-OFF* */ <code block> /* *INDENT-ON* */
์์ธํ ๋ด์ฉ์ GNU Indent manual์ 1.10 Disabling Formatting ์ ์ฐธ๊ณ ํฉ๋๋ค.
์ฝ๋ ๋จธ์ง ์ PR์ ์๋ํ ๋๊ตฌ์ ํฌํจ๋์ง ์๋ ํ ์คํธ๋ฅผ ๋ฏธ๋ฆฌ ๊ฒ์ฆํ๊ธฐ ์ํด QA ํ์ ๋น๋๋ ํ์ผ์ ์ ๋ฌํ์ฌ ์๋ ๊ฒ์ฆ์ ์์ฒญํ ์ ์์ต๋๋ค. ๋ค์์ ์ ์ฐจ๋ก ์งํํฉ๋๋ค.
๋น๋ ํ ์ค์น ํ์ผ์ QA ํ์ ์ด๊ดํฉ๋๋ค.
ํ ์คํธ๋ ์๋์ผ๋ก ์งํํ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ์์๋ ์ ์์ต๋๋ค.
ํ ์คํธ๊ฐ ์๋ฃ๋๋ฉด QA Home ํ์ด์ง ์ผ์ชฝ ํญ์ RB-<version>-Manual์์ ํ ์คํธํ ๋ฒ์ ์ ๊ฒฐ๊ณผ ๋ฆฌํฌํธ๋ฅผ ํ์ธ ํ ์ ์์ต๋๋ค.
๋ค์์ ๊ฒฝ์ฐ ์ด ๊ฒ์ฆ์ ํ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๊ฒ์ฆํด์ผ ํ๋ ํ ์คํธ ์ผ์ด์ค ๋๋ ์ํฉ์ ํน์ ํ ์ ์๋ ๊ฒฝ์ฐ
QA์ ํ ์คํธ ์ผ์ด์ค๊ฐ ๋ณตํฉ์ ์ผ๋ก ๋์์ผ ๋ฐ์ํ๋ ๋ฒ๊ทธ
์๋ฅผ ๋ค์ด ํ๋์ SQL๊ณผ ๊ฐ๋จํ ๋๋ฒ๊น ์ผ๋ก ๋ฒ๊ทธ๋ฅผ ์ฐพ๊ธฐ ํ๋ ๊ฒฝ์ฐ, ํ์ธ์ ์ํ ๋๋ฒ๊น ๋ก๊ทธ๋ฅผ ์ฝ๋์ ๋ฃ์ด๋๊ณ QA ์์คํ ํ๊ฒฝ์์ ์ฌ๋ฌ ํ ์คํธ๊ฐ ๋๋๋ก ํ์ฌ ๋ณต์กํ ๊ฒฝ์ฐ๋ฅผ ํ์ธํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ฉด ์ข์ต๋๋ค.
QA ์์์ ๋ฌด๋ถ๋ณํ ์๋ชจ๋ฅผ ๋ง๊ธฐ ์ํด TDD์ ์ฉ๋๋ก ์ด ์ ์ฐจ๋ฅผ ํ์ฉํ์ง ์๋๋ก ํฉ๋๋ค.
์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํต๊ณผํ์ง ์๊ณ ์ฝ๋๋ฅผ ๋จธ์งํ ์ ์์ต๋๋ค. ์๋ํ ๋๊ตฌ์์ ๊ฒ์ฆ๋์๊ณ , ๋ฆฌ๋ทฐ์ด๊ฐ ๋ชจ๋ โApprovedโ ํ ๊ฒฝ์ฐ์ ๋จธ์งํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ โSquash and Mergeโ ๋ฒํผ์ด ํ์ฑํ ๋๊ณ , ์ ์ฅ์์ ๋ฐ์ํ๋ ์ปค๋ฐ์ ์์ฑํ ์ ์์ต๋๋ค.
์ฝ๋ ๋จธ์ง (Squash and Merge) ์ ๋ค์์ ํฌ๋งท์ผ๋ก ๋ฉ์์ง๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
Title
[์ด์ ๋ฒํธ] ์์ฑ
PR์ ์ ๋ชฉ๊ณผ ๋์ผํด์ผํฉ๋๋ค
Message
์ฒซ ์ค์๋ PR๊ณผ ๋์ผํ๊ฒ JIRA ์ด์์ ๊ฒฝ๋ก๋ฅผ ์์ฑํฉ๋๋ค.
๋์งธ ์ค์ ๋น์๋ก๋๋ค.
์ ์งธ ์ค๋ถํฐ ๋ฐ์ํ๋ commit์ ๋ํ ์ค๋ช ์ ์์ฑํฉ๋๋ค.
์์)
Title
[CBRD-00000] Fix something in somewhere (#0000)
Message
http://jira.cubrid.org/browse/CBRD-00000
This is a description of the commit to be merged
์ฐธ๊ณ ๋ก ์ฝ๋ ๋จธ์ง ํ QA ์์คํ ์ ํฌ๊ฒ ์ํฅ์ ์ฃผ๋ ๊ฒฝ์ฐ QA ํ์์ ํด๋น ๋จธ์ง๋ commit์ revert ํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Workflow after code merging์ ํ ์คํธ ์คํจ (regression) ๋ฐ์ ์ ์ ์ฐจ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค.
Title



๊ฐ๋ฐ ์ค์ด๋ ๊ฐ๋ฐ ์๋ฃ ํ ๋งค๋ด์ผ ์ถ๊ฐ/์์ ์ด ํ์ํ ๊ฒฝ์ฐ ์๋จ์ ๊ฐ์ด๋๋ผ์ธ๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋งค๋ด์ผ JIRA ์ ๋งค๋ด์ผ Github์์ ์ํํฉ๋๋ค.
๋งค๋ด์ผ JIRA: http://jira.cubrid.org/projects/CUBRIDMAN
๋งค๋ด์ผ Github: https://github.com/CUBRID/cubrid-manual
๊ตฌ์ฒด์ ์ผ๋ก ๋ค์์ ์ ์ฐจ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
๋งค๋ด์ผ JIRA ์ด์ ์์ฑ
๋ง๋ค์ด์ง ๋งค๋ด์ผ JIRA๋ฅผ CBRD๋ APIS ํ๋ก์ ํธ์ ์ด์์ ์ฐ๊ฒฐ
๋งค๋ด์ผ ์์ฑ ํ Pull Request ์์ฑ
๋งค๋ด์ผ JIRA์ ์ํ๋ฅผ โDoneโ์ผ๋ก ๋ณ๊ฒฝ