arrow-left

Only this pageAll pages
gitbookPowered by GitBook
1 of 30

ko-cg

Loading...

Loading...

Loading...

Workflow with JIRA Issues

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Workflow with Github

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Workflow after Code Merging

Loading...

Loading...

Loading...

Contributing Guideline for First Contributors

Loading...

Loading...

Loading...

Release

Loading...

Introduction

ํ๋ธŒ๋ฆฌ๋“œ๋Š” ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์ด์Šˆ๋ฅผ ๋‹จ์œ„๋กœ ํ•˜์—ฌ ๊ด€๋ฆฌ ํ•ฉ๋‹ˆ๋‹ค. 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" ์ƒํƒœ๋Š” ํ•˜์œ„ ๋ฒ„์ „์— ํ…Œ์ŠคํŠธ ์™„๋ฃŒ๋œ ์ด์Šˆ์˜ ์ฝ”๋“œ ๋ฐ ๋งค๋‰ด์–ผ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ, ํ”„๋กœ์ ํŠธ ๋ฉ”์ธํ…Œ์ด๋„ˆ๋Š” ๋ชจ๋“  ์ƒํƒœ์—์„œ ๋‚ด์šฉ๊ณผ ์ด์Šˆ ์ƒํƒœ ์ „ํ™˜๊ณผ ๊ฐ™์€ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

JIRAarrow-up-right
JIRA ์›Œํฌํ”Œ๋กœ์šฐ

์ด์Šˆ ์ข…๋ฃŒ <Closed>

QA ๋‹ด๋‹น์ž๋Š” ํ•ด๋‹น ์ด์Šˆ์—์„œ ํ•„์š”ํ•œ QA ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์ด์Šˆ๋ฅผ ์ข…๋ฃŒํ•˜์—ฌ โ€œCLOSEDโ€ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ๋‹ค์Œ์˜ ์‚ฌํ•ญ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • QA scenario ์ถ”๊ฐ€/์ˆ˜์ • ๋ฐ ํ†ต๊ณผ ์—ฌ๋ถ€

  • Planned version/s ์— ๋”ฐ๋ฅธ ๋ฐฑํฌํŠธ ๋ฐ˜์˜ ์—ฌ๋ถ€

์ž‘์—… ์™„๋ฃŒ <Resolved>

๋‹ด๋‹น ๊ฐœ๋ฐœ์ž๋Š” ์ž‘์—… ์™„๋ฃŒ (โ€œHANDOEVR", "BACKPORT") ๋œ ์ดํ›„์— โ€œCheck-in Fixโ€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ โ€œRESOLVEDโ€ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , ํ•ด๋‹น ์ด์Šˆ๋ฅผ QA ๋ฉ”์ธํ…Œ์ด๋„ˆ์— ์ด๊ด€ํ•ฉ๋‹ˆ๋‹ค. QA๋กœ ์ด๊ด€ ํ›„์—๋Š” ์ด์Šˆ์˜ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž์™€ QA ๋‹ด๋‹น์ž๊ฐ€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

โ€œRESOLVEDโ€๋กœ ์ƒํƒœ ๋ณ€๊ฒฝ ์‹œ ๋‹ค์Œ์˜ ํ•„๋“œ๋ฅผ ํ•„์ˆ˜๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • QA assignee: ๋ณ€๊ฒฝ ํ•„์š” ์—†์ด ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. (๊ธฐ๋ณธ : QA ๋ฉ”์ธํ…Œ์ด๋„ˆ)

  • resolution: โ€œDoneโ€

  • manual: ๋งค๋‰ด์–ผ ์ž‘์„ฑ ๋˜๋Š” ์ˆ˜์ •์ด ํ•„์š”ํ•œ์ง€ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. (need manual)

  • QA scenario

    • not required : QA ์‹œ๋‚˜๋ฆฌ์˜ค ์ถ”๊ฐ€๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ (๊ธฐ๋ณธ๊ฐ’)

    • 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โ€์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—… ์ •๋ฆฌ <Handover>

๋‹ด๋‹น ๊ฐœ๋ฐœ์ž๋Š” ๊ตฌํ˜„ ์™„๋ฃŒ (๋™๋ฃŒ ๋ฆฌ๋ทฐ ๋ฐ ์ฝ”๋“œ ๋จธ์ง€)๋œ ํ›„ "Accept the fix" ๋ฒ„ํŠผ์„ ํ†ตํ•ด ํ’ˆ์งˆ ๋ณด์ฆํŒ€(QA)์— ์ด๊ด€์— ํ•„์š”ํ•œ ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•œ "HANDOVER" ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. "HANDOVER" ์ƒํƒœ์—์„œ๋Š” ๋งค๋‰ด์–ผ ์ž‘์„ฑ, ํ…Œ์ŠคํŠธ ํ•ญ๋ชฉ ์ž‘์„ฑ ๋ฐ ์ŠคํŽ™ ๋ณ€๊ฒฝ๋กœ ์ธํ•ด ์ˆ˜์ •์ด ํ•„์š”ํ•œ regression ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

ํ’ˆ์งˆ ๋ณด์ฆํŒ€ ์ด๊ด€ ํ›„ QA ๋ฉ”์ธํ…Œ์ด๋„ˆ ๋˜๋Š” ํ…Œ์ŠคํŠธ ๋‹ด๋‹น์ž๊ฐ€ ํ…Œ์ŠคํŠธ ๊ด€๋ จ ์ถ”๊ฐ€ ์š”์ฒญ์ด ์žˆ์„ ๊ฒฝ์šฐ "Need Something" ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ "HANDOVER" ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Introduction

CUBRID์—์„œ๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๊ฐœ๋ฐœ ์ง„ํ–‰ ์‹œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์™€ ๊ฐ™์€ ํ˜‘์—…์„ ์œ„ํ•œ ๋„๊ตฌ๋กœ Github์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Github์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ์˜ ์‚ฌํ•ญ์„ ์ž˜ ์ดํ•ดํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

  • Git ๋ธŒ๋žœ์น˜ ๋ชจ๋ธ

Pull Request์™€ ์ž๋™ํ™” ๋„๊ตฌ
  • ์ฝ”๋“œ ๋ฆฌ๋ทฐarrow-up-right

  • Git ์‚ฌ์šฉ๋ฒ•arrow-up-right
    revise required : ๊ธฐ์กด QA ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

    Git Workflow

    Git์€ ์ €์žฅ์†Œ์™€ ๊ด€๊ณ„์—†์ด ๋ธŒ๋žœ์น˜๋งŒ์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์—…ํ•œ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ๋ธŒ๋ฆฌ๋“œ ๋ฉ”์ธ์ €์žฅ์†Œ์™€ forkํ•œ ๋‚ด ์ €์žฅ์†Œ ๊ฐ„์— sync๋ฅผ ๋งž์ถ”๋Š” ์ž‘์—…์€ ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ธฐ ์ „ ์ฝ”๋“œ๋ฅผ upstream์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ˜์˜ ํ•  ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€์ ธ์™€ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฌผ์„ origin์— ์˜ฌ๋ฆฌ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    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

    ์ž‘์—… ์ง„ํ–‰ <Analysis, Develop>

    Triage๋ฅผ ํ†ตํ•ด ์ง€์ •๋œ ๊ฐœ๋ฐœ์ž(assign์— ์˜ํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)๋Š” โ€œStart Analysisโ€ ๋˜๋Š” "Start Develop" ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ due date ์ •ํ•œ ํ›„ โ€œANALYSISโ€ ๋˜๋Š” "DEVELOP" ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. โ€œANANLSYSโ€ ์ƒํƒœ๋Š” ๋ถ„์„(๋””๋ฒ„๊น… ํฌํ•จ), POC, ์„ค๊ณ„ ๋ฐ ์„ค๊ณ„ ๋ฆฌ๋ทฐ ์ž‘์—…์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, "DEVELOP" ์ƒํƒœ๋Š” ๊ตฌํ˜„, ์œ ๋‹›(unit) ํ…Œ์ŠคํŠธ ๋ฐ ๋™๋ฃŒ ๋ฆฌ๋ทฐ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ง„ํ–‰ ์ค‘์ธ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์— ๋งž์ถฐ ๊ฐœ๋ฐœ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

    ๊ฐœ๋ฐœ์ž๋Š” ์ž‘์—… ์ง„ํ–‰ ์ƒํƒœ(ANALYSIS, DEVELOP)์—์„œ โ€œNeed Analysisโ€ ๋˜๋Š” "Need Develop" ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ž‘์—… ์ง„ํ–‰ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ฐœ๊ฒฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํ•œ ์ˆ˜์ •์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๊ณ , ๋ถ„์„ ๋˜๋Š” ์„ค๊ณ„์—์„œ ๊ณ ๋ ค๊ฐ€ ๋” ํ•„์š”ํ•œ ๊ฒฝ์šฐ "Need Analysis" ๋ฒ„ํŠผ์„ ํ†ตํ•ด "ANALYSIS" ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

    ์ด์Šˆ ์„ ๋ณ„ (Triage) <Confirmed>

    ํ”„๋กœ์ ํŠธ ๋ฉ”์ธํ…Œ์ด๋„ˆ๋Š” โ€œ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" ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    hashtag

    Overview

    CUBRID๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ, ์ผ๋ฐ˜์ ์ธ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์šด์˜ํ•ฉ๋‹ˆ๋‹ค. CUBRID์˜ ๊ฐœ๋ฐœ์ž๋“ค์€ ์˜คํ”ˆ์†Œ์Šค ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ํ˜‘์—… ๋„๊ตฌ๋ฅผ ์ด์šฉํ•ด CUBRID๋ผ๋Š” ํ•˜๋‚˜์˜ ํฐ ํ”„๋กœ์ ํŠธ์— ํ•จ๊ป˜ ๊ธฐ์—ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด ๋ฌธ์„œ๋Š” ํ˜‘์—… ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœ ์›Œํฌ ํ”Œ๋กœ์šฐ๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ๊ฐœ๋ฐœ ๋ฌธํ™”์— ๋Œ€ํ•œ ์ƒํ˜ธ ํ•ฉ์˜๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ ์›์น™ ์ˆ˜๋ฆฝ ๋ชฉ์ ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒํ˜ธ ๊ฐ„์˜ ํ•ฉ์˜๋กœ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์œ ์—ฐํ•˜๊ฒŒ ์ ์šฉํ•˜๊ณ , ๋ฌธ์„œ๋ฅผ ์ˆ˜์ •/๋ฐœ์ „ ์‹œ์ผฐ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

    • ๊ณต์ •๊ณผ ๋„๊ตฌ๋ณด๋‹ค ๊ฐœ์ธ์˜ ์ƒํ˜ธ์ž‘์šฉ์„

    • ํฌ๊ด„์ ์ธ ๋ฌธ์„œ๋ณด๋‹ค ์ž‘๋™ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ

    ๊ณ„ํš์— ๋”ฐ๋ฅด๊ธฐ๋ณด๋‹ค ๋ณ€ํ™”์— ๋Œ€์‘ํ•˜๊ธฐ๋ฅผ

    CUBRID ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ ๋‘ ๋„๊ตฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์šด์˜๋ฉ๋‹ˆ๋‹ค.

    • Issue Tracking: JIRA (jira.cubrid.orgarrow-up-right)

    • Code Repository and Code Review: Github (github.com/CUBRIDarrow-up-right)

    CUBRID์˜ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ, ๊ธฐ๋Šฅ์ถ”๊ฐ€, ๋ฒ„๊ทธ์ˆ˜์ •์€ JIRA ์ด์Šˆ ์ƒ์„ฑ์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. JIRA์˜ Issue workflow์— ๋”ฐ๋ผ ๋ฌธ์ œ๋ฅผ ์ •์˜, ๋ถ„์„ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ์ง€๋‚˜ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ ๋‹จ๊ณ„์—์„œ๋Š” Github์—์„œ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ, Pull Request, ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ†ตํ•ด ๊ฒ€ํ† /๊ฒ€์ฆ ๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„ CUBRID์— ์ฝ”๋“œ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ๊ณผ์ •์„ ๊ณ„์† ๋ฐ˜๋ณตํ•˜์—ฌ CUBRID๋ฅผ ๊ณ„์† ๋ฐœ์ „์‹œํ‚ต๋‹ˆ๋‹ค.

    How to Read This Document

    ์ด ๋ฌธ์„œ๋Š” ์ „์ฒด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ JIRA, Github, ๋จธ์ง€ ํ›„ ์ƒํ™ฉ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ๊ฐ์˜ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ๋ธŒ๋ฆฌ๋“œ ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ธฐ ์ „์— ๋ฌธ์„œ ์ „์ฒด๋ฅผ ํ•œ ๋ฒˆ ํ•„๋…์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ํ•ด๋‹น ์„น์…˜์˜ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

    Good first issue

    ํ๋ธŒ๋ฆฌ๋“œ์—์„œ ๊ธฐ์—ฌ๋Š” ๋‹ค์Œ์˜ ํ™œ๋™์„ ํ†ตํ•ด ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • ์‚ฌ์ „ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜: ๊ธฐ์—ฌ์ž๊ฐ€ ์–ด๋–ค ๋ฒ„๊ทธ๋‚˜ ๊ฐœ์„ ํ•  ์‚ฌํ•ญ์„ ์ฐพ๋Š” ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ๋ฉ”์ธํ…Œ์ด๋„ˆ์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜๊ฒฌ๊ณผ ๋ฐฉ๋ฒ•์„ ์ œ์•ˆ

    • ์ด์Šˆ ์ƒ์„ฑ: ์‚ฌ์ „ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ํ†ตํ•ด ๊ธฐ์—ฌ ๋‚ด์šฉ๊ณผ ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด ์ถฉ๋ถ„ํžˆ ์ˆ˜๋ ด๋˜์—ˆ๊ณ  ๊ธฐ์—ฌํ•˜๊ธฐ ์œ„ํ•œ ํ•ฉ์˜์— ๋„๋‹ฌํ–ˆ๋‹ค๋ฉด ์ด์Šˆ๋ฅผ ์ƒ์„ฑ

    • Pull Request ์ƒ์„ฑ: ์ด์Šˆ ํ•ด๊ฒฐ์˜ ์‚ฐ์ถœ๋ฌผ, ์„ค๊ณ„ ๋””์ž์ธ๊ณผ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ˆ˜ํ–‰

    ์™ธ๋ถ€ ๊ธฐ์—ฌ๋ฅผ ๋ฐ›์„ ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ชฉํ‘œ๋Š” ์™ธ๋ถ€ ๊ธฐ์—ฌ์ž์˜ ํ™œ๋™์„ ๋๊นŒ์ง€ ๋งˆ์น˜๋„๋ก ์œ ๋„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ๊ธฐ์—ฌ์˜ ์‹œ์ž‘์ธ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ๊ฐ€์žฅ ์–ด๋ ต๊ณ  ๊ท€์ฐฎ์€ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฉ”์ธํ…Œ์ด๋„ˆ์—๊ฒŒ ์„ค๋“์„ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์ž๋ฃŒ, ๊ฐ„๋‹จํ•œ ์„ค๊ณ„ ๋””์ž์ธ, ์ฝ”๋“œ ๋ถ„์„ ๋“ฑ์ด ์„ ํ–‰๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋˜ ์ง€๊ธˆ ํ๋ธŒ๋ฆฌ๋“œ์— ์–ด๋–ค ๊ธฐ๋Šฅ ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ์ง€ ์ง์ ‘ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ๋„ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    ํ”„๋กœ์ ํŠธ ๋ฉ”์ธํ…Œ์ด๋„ˆ์™€ ์ฝ”์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ด๋–ค ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ด๋ฏธ ์ง„ํ–‰์„ ํ•ฉ์˜ํ–ˆ์ง€๋งŒ ๋ฆฌ์†Œ์Šค ๋ถ€์กฑ์œผ๋กœ ์ง„ํ–‰ํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ ์ด์Šˆ๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์Šˆ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜๊ณผ ์ด์Šˆ ์ƒ์„ฑ ๋‹จ๊ณ„๋ฅผ ์ƒ๋žตํ•˜๊ณ  ์™ธ๋ถ€ ๊ธฐ์—ฌ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํŠนํžˆ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ์ด์Šˆ ์ค‘ ๋น„๊ต์  ๊ธฐ์—ฌ ๋‚œ์ด๋„๊ฐ€ ์‰ฝ๊ณ  ์งง์€ ์‹œ๊ฐ„์— ๊ธฐ์—ฌํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ์ด์Šˆ์— ๋Œ€ํ•ด โ€œGood First Issueโ€ ์ด์Šˆ๋กœ ์„ค์ •ํ•ด๋‘๊ณ  ๊ฐ€์ด๋“œํ•œ๋‹ค๋ฉด ๊ธฐ์—ฌ์ž๊ฐ€ ์ข€ ๋” ์‰ฝ๊ฒŒ ํ๋ธŒ๋ฆฌ๋“œ์— ๊ธฐ์—ฌ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ๊ธฐ์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฝํ—˜ํ•˜๊ณ  ๋‚˜๋ฉด ๊ทธ ๋‹ค์Œ์—” ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    โ€œGood First Issueโ€๋Š” JIRA Issue label์— ์ง€์ •ํ•ด๋‘๊ณ  ์ปค์Šคํ…€ ํ•„ํ„ฐ๋กœ ๋งŒ๋“ค์–ด๋‘๊ณ  ๊ฐ€์ด๋“œํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

    Contributor License Agreement (CLA)

    ๋งŒ์•ฝ ๋ˆ„๊ตฐ๊ฐ€ ํ๋ธŒ๋ฆฌ๋“œ์— ์ฒ˜์Œ ๊ธฐ์—ฌ๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ Pull Request๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ๋ฐ˜์˜ํ•˜๊ธฐ ์ „์— CLA๋ฅผ ์ œ์ถœํ•˜์˜€๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

    • https://www.cubrid.org/contributor_agreementarrow-up-right

    ํ…Œ์ŠคํŠธ ์ง„ํ–‰ <Test>

    QA ๋‹ด๋‹น์ž๋Š” "Start Test" ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ "TEST" ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. "TEST" ์ƒํƒœ๋Š” ๋งค๋‰ด์–ผ ํ…Œ์ŠคํŠธ, ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค ์ž‘์„ฑ ๋ฐ ํ…Œ์ŠคํŠธ ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋กœ์ ํŠธ ๋ฉ”์ธํ…Œ์ด๋„ˆ, QA ๋ฉ”์ธํ…Œ์ด๋„ˆ ๋ฐ QA ๋‹ด๋‹น์ž๋Š” ์ข…๋ฃŒ๋œ ์ด์Šˆ("CLOSED")์— ๋Œ€ํ•ด ์ถ”๊ฐ€์ ์ธ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”์‹œ "Need Test"๋ฅผ ํ†ตํ•ด "TEST"๋กœ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋งค๋‰ด์–ผ ์ž‘์„ฑ ๊ฐ€์ด๋“œ

    ๊ฐœ๋ฐœ ์ค‘์ด๋‚˜ ๊ฐœ๋ฐœ ์™„๋ฃŒ ํ›„ ๋งค๋‰ด์–ผ ์ถ”๊ฐ€/์ˆ˜์ •์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ƒ๋‹จ์˜ ๊ฐ€์ด๋“œ๋ผ์ธ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋งค๋‰ด์–ผ JIRAarrow-up-right ์™€ ๋งค๋‰ด์–ผ Githubarrow-up-right์—์„œ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • ๋งค๋‰ด์–ผ JIRA: http://jira.cubrid.org/projects/CUBRIDMANarrow-up-right

    • ๋งค๋‰ด์–ผ Github: https://github.com/CUBRID/cubrid-manualarrow-up-right

    ๊ตฌ์ฒด์ ์œผ๋กœ ๋‹ค์Œ์˜ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

    • ๋งค๋‰ด์–ผ JIRA ์ด์Šˆ ์ž‘์„ฑ

    • ๋งŒ๋“ค์–ด์ง„ ๋งค๋‰ด์–ผ JIRA๋ฅผ CBRD๋‚˜ APIS ํ”„๋กœ์ ํŠธ์˜ ์ด์Šˆ์™€ ์—ฐ๊ฒฐ

    • ๋งค๋‰ด์–ผ ์ž‘์„ฑ ํ›„ Pull Request ์ƒ์„ฑ

    Preface

    hashtag
    ๋ฌธ์„œ ์ด๋ ฅ

    ์ผ์ž

    ์ด๋ ฅ ์‚ฌํ•ญ

    ์ž‘์„ฑ์ž

    2021.04.01

    ์ดˆ์•ˆ ์ž‘์„ฑ

    ๊น€์žฌ์€ ([email protected])

    ๊น€์ฃผํ˜ธ ([email protected])

    ์œ ํ˜•๊ทœ ([email protected])

    Backport

    backport๋ž€ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ๊ธฐ๋Šฅ ๋ฐ ์ˆ˜์ •์‚ฌํ•ญ์„ ์ด์ „ ๋ฒ„์ „์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CUBRID 11์—์„œ ๋ฐœ๊ฒฌ๋˜์–ด ๊ณ ์ณ์ง„ ๋ฒ„๊ทธ๋ฅผ CUBRID 10.2.1 ๋ฒ„์ „์—์„œ๋„ ๋ฐœ์ƒํ•˜์—ฌ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ณ ์ณ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ backport๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๊ฒฝ์šฐ Github ๋„๊ตฌ์˜ ๊ด€์ ์—์„œ ๋ณด๋ฉด develop ๋ธŒ๋žœ์น˜์— ๋ฐ˜์˜๋œ ์ปค๋ฐ‹์„ release/10.2 ๋ธŒ๋žœ์น˜์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋•Œ ์ฃผ์˜ํ•  ์‚ฌํ•ญ์€ ์—ฌ๋Ÿฌ ๋ฒ„์ „์— ๋ฐ˜์˜ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •์˜ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ develop์— ๋จผ์ € ์ปค๋ฐ‹์„ ๋ฐ˜์˜ํ•˜๊ณ  release์— backport ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. QA regression ๊ฒฐ๊ณผ ํ™•์ธ ๋ฐ ์ถ”๊ฐ€ ํŒจ์น˜๋ฅผ ํ†ตํ•ด ๊ฒ€์ฆ๋œ ํŒจ์น˜๋ฅผ ์ด์ „ ๋ฒ„์ „์— backport ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ๋ฒ„์ „์˜ ์•ˆ์ •์„ฑ์„ ํ•ด์น˜๋Š” ๊ฒƒ์„ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ develop์—์„œ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ release์—๋งŒ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

    backport ์‹œ ๋‹ค์Œ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • ์—ฌ๋Ÿฌ ๋ฒ„์ „์— ํ•œ๊บผ๋ฒˆ์— ๋ฐ˜์˜ํ•  ๋•Œ๋Š” develop ๋ธŒ๋žœ์น˜์— ์šฐ์„  ๋ฐ˜์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๋ฐฑํฌํŠธ <Backport>

    ๋‹ด๋‹น ํ…Œ์Šคํ„ฐ๋Š” ํ…Œ์ŠคํŠธ ์™„๋ฃŒ ํ›„ "Need Backport" ๋ˆŒ๋Ÿฌ planned version์— ๋ช…์‹œ๋œ ํ•˜์œ„ ๋ฒ„์ „์— ๋ฐฑํฌํŠธ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. "BACKPORT"์ƒํƒœ๋Š” ์ฝ”๋“œ ๋ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ planned version์— ๋ช…์‹œ๋œ develop ๋ธŒ๋žœ์น˜๋ฅผ ์ œ์™ธํ•œ ํ•˜์œ„ ๋ธŒ๋žœ์น˜์— ๋ฐฑํฌํŠธ ์ž‘์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ๋งค๋‰ด์–ผ ๋ฆฌ๋ทฐ์™€ ์ฝ”๋“œ ๋จธ์ง€ (์ด์ „ ๋ฒ„์ „ ํฌํ•จ)
  • ๋งค๋‰ด์–ผ JIRA์˜ ์ƒํƒœ๋ฅผ โ€œDoneโ€์œผ๋กœ ๋ณ€๊ฒฝ

  • 2021.04.02

    ๋ฆฌ๋ทฐ ์ˆ˜์ •

    ์˜ค๋ช…ํ™˜ ([email protected])

    2021.04.05

    ์—ฐ๊ตฌ์†Œ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜

    ์œ ํ˜•๊ทœ ([email protected])

    2024.04.30

    ๊ฐœ์„ ๋œ ์›Œํฌํ”Œ๋กœ์šฐ ๋ฐ˜์˜

    ์˜ค๋ช…ํ™˜ ([email protected])

    ํ…Œ์ŠคํŠธ ์‹คํŒจ (regression) ๋ฐœ์ƒ ์‹œ ์ ˆ์ฐจ ๊ฐ€์ด๋“œ

    ๋งŒ์•ฝ QAํŒ€์—์„œ ํ…Œ์ŠคํŠธ ๋„๊ตฌ์—์„œ ๊ฒ€์ฆ ํ›„ ๋ฐ˜์˜ํ•œ ๋ณ€๊ฒฝ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด QA ์‹œ์Šคํ…œ์— ํฌ๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฒฝ์šฐ QAํŒ€์—์„œ ํ•ด๋‹น ๋ณ€๊ฒฝ์˜ commit์— ๋Œ€ํ•ด revert ํ•˜๊ณ  JIRA๋ฅผ โ€œCONFIRMEDโ€ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด๋‹น ์ด์Šˆ๊ฐ€ ๋‹ค์‹œ triage๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜๋Š” ๊ฒฝ์šฐ โ€œOPENโ€ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    QA ์‹œ์Šคํ…œ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์ฆ‰์‹œ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

    • ์ผ๋ถ€ ๋˜๋Š” ์ „์ฒด ์‹œ์Šคํ…œ์ด ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ (core ํŒŒ์ผ ์ƒ์„ฑ)

    • ์‹œ์Šคํ…œ์ด ๋ฉˆ์ถ”๋Š” ๊ฒฝ์šฐ (hang)

    • ์ด์Šˆ์™€ ๋””์ž์ธ ๋ฌธ์„œ์—์„œ ์ •์˜ํ•œ ๋™์ž‘๊ณผ ๋‹ค๋ฅธ ๊ฒฝ์šฐ

    • ๋„ˆ๋ฌด ๋งŽ์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ

    • ์‹ฌ๊ฐํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ

    ์œ„์˜ ์ƒํ™ฉ์ด ์ง€์†๋œ ์ƒํƒœ๋กœ QA ์‹œ์Šคํ…œ์ด ๊ณ„์† ์šด์˜๋˜๋Š” ๊ฒฝ์šฐ, ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ๊ฒฐ๊ณผ์˜ ์‹ ๋ขฐ์„ฑ(robustness)์— ์˜ํ–ฅ์ด ์žˆ๊ณ  ์ดํ›„ ๋ฌธ์ œ ํŒŒ์•…์— ํ•„์š”ํ•œ ๋น„์šฉ์ด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ปค์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    ๋งŒ์•ฝ JIRA๊ฐ€ โ€œOPENโ€ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ„๋‹ค๋ฉด, JIRA Workflow์— ๋”ฐ๋ผ ์„ค๊ณ„ ๋””์ž์ธ๊ณผ ๊ตฌํ˜„, ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋‹จ๊ณ„๋ฅผ ์ฒ˜์Œ์œผ๋กœ ๋‹ค์‹œ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ ๋‹จ๊ณ„์—์„œ ์žฌ๊ฒ€ํ† ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, ํ”ผ์ณ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

    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์—์„œ ๋งํฌ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    http://jira.cubrid.org/browse/CBRD-OOOOO

    backport #235

    backport ์‹œ JIRA์— ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

    • QA ์ด๊ด€ ์ „

      • Planned Version(s) ์ค‘ ์ตœ์‹ ๋ฒ„์ „ (develop) ๊ณผ backport ๋Œ€์ƒ ๋ฒ„์ „์— ๋Œ€ํ•ด ๋ชจ๋‘ PR ์ƒ์„ฑ

      • ๊ฐ PR์— ๋Œ€ํ•ด ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ›„ ๋จธ์ง€ ์™„๋ฃŒ

      • ๊ฐœ๋ฐœ์ž๋Š” ํ•ด๋‹น JIRA ์ด์Šˆ์— PR ๋ฐ˜์˜๋œ ๋ฒ„์ „์„ Fixed version(s) ๊ธฐ๋ก

    • QA ์ด๊ด€

      • โ€œResolvedโ€ ์ƒํƒœ๋กœ ๋ฐ”๊พธ๊ธฐ

    • QA๋Š” ํ…Œ์ŠคํŠธ ์™„๋ฃŒ ํ›„ ์ด์Šˆ๋ฅผ โ€œCloseโ€ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ

    #git ๋ช…๋ น์–ด ์˜ˆ์‹œ 
    git checkout develop
    git log // backport ํ•  commit id ์ฐพ๊ธฐ
    git checkout release/10.2
    git cherry-pick <commit-id>

    QA ๋ฆฌํฌํŠธ ํ™•์ธ

    QA ํŒ€์—์„œ ํ…Œ์ŠคํŠธ ์‹œ์Šคํ…œ์„ ์šด์˜ํ•˜๊ธฐ ์œ„ํ•ด Jenkins๋ผ๋Š” CI ํˆด์„ ์šด์˜ํ•ฉ๋‹ˆ๋‹ค. Pull Request๊ฐ€ ๋ฐ˜์˜๋˜๋ฉด (merge), Jenkins๋Š” Github๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด ๋ฐ˜์˜๋œ ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. (์ฐธ๊ณ : http://ci.cubrid.org/blue/organizations/jenkins/cubrid/activity/arrow-up-right)

    Jenkins์—์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ ๋ฆฌํฌํŠธ๋Š” http://qahome.cubrid.org/arrow-up-right์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€์˜ ์ขŒ์ธก์—์„œ ๋ฒ„์ „๋ณ„ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋ฆฌํฌํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์˜ค๋ฅธ์ชฝ์—๋Š” ์ตœ์‹  ํ…Œ์ŠคํŠธ ๋ฆฌํฌํŠธ์— ๋Œ€ํ•œ ์š”์•ฝ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

    ์ขŒ์ธก์— ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋ฆฌํฌํŠธ๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ํƒญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ ๊ธฐ๋Šฅ, ์„ฑ๋Šฅ, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ํ…Œ์ŠคํŠธํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. (์ œ์ผ ์šฐ์ธก์˜ ๋ฒ„ํŠผ์€ ๊ฐœ๋ฐœํŒ€์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค)

    circle-info

    ์ด๋ฉ”์ผ๋กœ ์ฃผ๊ธฐ์ ์œผ๋กœ QA ํ…Œ์ŠคํŠธ ๋ฆฌํฌํŠธ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

    ๋จธ์ง€ ์‹œ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ, ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ, ๋ฉ”๋ชจ๋ฆฌ ๋ฆญ์„ ๊ผญ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๊ฐ€ 5%์ด์ƒ ์ฐจ์ด๊ฐ€ ๋‚˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ…Œ์ŠคํŠธ๋Š” ๊ธฐ๋Šฅ์  ํ…Œ์ŠคํŠธ (Function Test)์™€ ๋น„๊ธฐ๋Šฅ์  ํ…Œ์ŠคํŠธ (Non-Function Test)๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, ๋ฆฌ๋ˆ…์Šค์™€ ์œˆ๋„์šฐ ํ™˜๊ฒฝ์— ๋Œ€ํ•ด ๊ฐ๊ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์œˆ๋„์šฐ๋Š” ๋ฆฌ๋ˆ…์Šค๋ณด๋‹ค ํ…Œ์ŠคํŠธํ•˜๋Š” ํ•ญ๋ชฉ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ ์Šต๋‹ˆ๋‹ค.

    hashtag

    Release

    ์ด ์„น์…˜์€ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ ๋ฒ”์œ„๋Š” ๋ฒ—์–ด๋‚˜์žˆ์ง€๋งŒ ์ฐธ๊ณ ํ• ๋งŒํ•œ ๋‚ด์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ ˆ์ฐจ๊ฐ€ ์ž์„ธํžˆ ๊ธฐ์ˆ ๋˜์ง„ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ ์ •๋ณด์™€ ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ์œ„ํ•œ ๊ฐœ๋žต์ ์ธ ์ ˆ์ฐจ๋ฅผ ์ฐธ๊ณ ๋กœ๋งŒ ์ฝ์–ด์ฃผ์„ธ์š”.

    hashtag
    Version

    hashtag

    Build Number

    ํ๋ธŒ๋ฆฌ๋“œ์˜ ๋นŒ๋“œ ๋ฒˆํ˜ธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

    • Major.Minor.Patch.Revision

      • e.g) 11.1.0.0512.2d9a03248

      • Patch๋Š” ์ด์ „ ๋ฆด๋ฆฌ์ฆˆ ์‹œ์ ๋ถ€ํ„ฐ commit count๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

      • Revision์€ ๋นŒ๋“œ ์‹œ์ ์˜ commit hash๊ฐ€ ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค.

    hashtag
    Code Name

    Major์™€ Minor ๋ฒ„์ „ ๋ฆด๋ฆฌ์ฆˆ ์‹œ ๋‹ค์Œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์ฝ”๋“œ ๋„ค์ž„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

    • ๊ณผ์ผ ์ด๋ฆ„

      • elderberry (11.1)

      • damson (11.0)

      • cherry (10.2), cherry sherbet

      • banana (10.0), banana pie (10.1)

    • ๋ฒ„์ „ ๋ฒˆํ˜ธ๋Š” ํ•ญ์ƒ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋ฆด๋ฆฌ์ฆˆ ํ›„์—๋Š” ์ฝ”๋“œ ๋„ค์ž„ ๋Œ€์‹  ๋ฒ„์ „ ๋ฒˆํ˜ธ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    hashtag
    Release milestones

    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

    hashtag
    ๋ฆด๋ฆฌ์ฆˆ ์ ˆ์ฐจ

    • 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๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ๋ฆด๋ฆฌ์ฆˆํ•ฉ๋‹ˆ๋‹ค.

    JIRA ์ด์Šˆ ๋“ฑ๋ก <OPEN>

    ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ ์•ˆ๊ฑด์„ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋ฒ„๊ทธ๋ฅผ ๋ฐœ๊ฒฌํ•œ ๊ฒฝ์šฐ์— Jira ์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด์Šˆ ์ƒ์„ฑ ์ ˆ์ฐจ ๋ฐ ์ž‘์„ฑํ•  ํ•ญ๋ชฉ์€ ์ด์Šˆ ์ž‘์„ฑ ์ ˆ์ฐจ์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด์Šˆ์˜ ์ดˆ๊ธฐ ์ƒํƒœ๋Š” โ€œOPENโ€์œผ๋กœ ์„ค์ •๋˜์ง€๋งŒ, Triage๋ฅผ ํ†ตํ•ด ์Šน์ธ์„ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด์Šˆ ์ž‘์„ฑ ์™„๋ฃŒ ํ›„ ๋ฉ”์ธํ…Œ์ด๋„ˆ์—์„œ ์ด์Šˆ๋ฅผ "To Triage" ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ”„๋กœ์ ํŠธ ๋ฉ”์ธํ…Œ์ด๋„ˆ์—๊ฒŒ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ดํ›„ ํ•„์š”์— ๋”ฐ๋ผ ๊ฐ ์ƒํƒœ๋กœ๋ถ€ํ„ฐ ๋‹ค์‹œ โ€œOPENโ€ ์ƒํƒœ๋กœ ๋˜๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์Šˆ ์ง„ํ–‰ ์ค‘ ์–ด๋–ค ์ƒํƒœ (CONFIRMED, ANALYSIS, DEVELOP, HANDOVER, RESOLVED)์—์„œ๋„ ํ•ด๋‹น ์ด์Šˆ์˜ ์žฌํ™•์ธ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ โ€œAsk Reconfirmationโ€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ด์Šˆ์˜ ์ƒํƒœ๋ฅผ โ€œOPENโ€ ์œผ๋กœ ๋˜๋Œ๋ฆฌ๋ฉด ์ž๋™์œผ๋กœ ํ”„๋กœ์ ํŠธ ๋ฉ”์ธํ…Œ์ด๋„ˆ์—๊ฒŒ ์ด์Šˆ๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์™„๋ฃŒ๋œ (CLOSED) ์ด์Šˆ๋„ ์ถ”ํ›„์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ๋˜๋ฉด โ€œReopen Bugโ€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ•ด๋‹น ์ด์Šˆ์˜ ์ƒํƒœ๋ฅผ โ€œOPENโ€ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    circle-info

    ์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์—๋Š” ํ•˜๋‚˜์˜ ์ด์Šˆ๋กœ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ์ง€ ๋ง๊ณ , ๊ฐ€๊ธ‰์  ๋ฌธ์ œ๋ฅผ ์ชผ๊ฐœ์–ด ์—ฌ๋Ÿฌ ์ด์Šˆ๋กœ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

    hashtag
    ์ด์Šˆ ์ž‘์„ฑ ์ ˆ์ฐจ

    1. JIRA (jira.cubrid.org)์— ๋กœ๊ทธ์ธ ํ›„ ์ƒ๋‹จ์˜ ์˜ค๋ Œ์ง€์ƒ‰ โ€œCREATEโ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    2. ์ƒˆ๋กœ ์—ด๋ฆฐ โ€œCREATE Issueโ€ ์ฐฝ์—์„œ ๊ฐ ํ•„๋“œ๋ฅผ ๋‹ค์Œ ํ‘œ์˜ ์„ค๋ช…์— ๋งž๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  ํ•˜๋‹จ์˜ โ€œCreateโ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    hashtag

    hashtag
    Issue Types

    hashtag

    hashtag
    Component

    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๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    hashtag
    ์ด์Šˆ ๋‚ด์šฉ ํ…œํ”Œ๋ฆฟ

    circle-info

    ์ด์Šˆ ์ƒ์„ฑ ์‹œ ์ด์Šˆ ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ค์Œ์˜ ํ…œํ”Œ๋ฆฟ์„ ๋ณต์‚ฌํ•˜๊ณ , ํ•„์š”ํ•œ ํ•ญ๋ชฉ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. > ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์„น์…˜์„ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ > ํ…œํ”Œ๋ฆฟ์˜ ์„น์…˜์€ ํ•„์š” ์—†๋Š” ๊ฒฝ์šฐ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  N/A๋กœ ๋‚จ๊ฒจ๋‘๊ณ  ์ž‘์„ฑ > ์•„์ง ์ž‘์„ฑํ•˜์ง€ ๋ชปํ•œ ํ•„๋“œ์— ๋Œ€ํ•ด์„œ๋Š” TBD๋กœ ์ ์–ด๋‘๊ณ  ํ™•์ •๋˜๋ฉด ๋‚ด์šฉ์„ ์ž‘์„ฑ

    ํ…œํ”Œ๋ฆฟ์€ ์ด์Šˆ ํƒ€์ž…์— ๋”ฐ๋ผ ์„ธ๊ฐ€์ง€ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    hashtag
    Correct Error

    • Description: ์ด์Šˆ ์„ค๋ช…

    • Test Build: Repro, Actual Result์™€ ๋™์ผํ•œ ํ˜„์ƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋นŒ๋“œ ๋ฒ„์ „์„ commit ๋ฒˆํ˜ธ๊นŒ์ง€ ์ƒ์„ธํžˆ ๊ธฐ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธฐ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: CUBRID-11.0.0.0248-b53ae4a JIRA ํ•„๋“œ์˜ Affected version/s์€ Major์™€ Minor ๋ฒ„์ „๊นŒ์ง€๋งŒ ํ‘œ์‹œํ•˜๋Š” ๋ฐ˜๋ฉด, Patch์™€ Revision์„ ํฌํ•จํ•˜์—ฌ ์‹ค์ œ๋กœ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ตฌ์ฒด์ ์ธ ๋ฒ„์ „ ๋ช…์„ ์ž…๋ ฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „๋ช…์˜ ๊ทœ์น™์€ ์„น์…˜์„ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œํ•œ OS์˜ ๋ฒ„์ „๋„ ํ•จ๊ป˜ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์˜ˆ์‹œ)

    hashtag
    Improve Function/Performance, Development Subject, Refactoring

    • Description: ์ด์Šˆ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ ์Šต๋‹ˆ๋‹ค.

    • Specification Changes : ๋ณ€๊ฒฝ๋  ์ŠคํŽ™์„ ์ •๋ฆฌํ•˜์—ฌ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. QA ํ…Œ์ŠคํŠธ ์ •์˜, ๋งค๋‰ด์–ผ ์ž‘์„ฑ ๋“ฑ์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • Implementation: ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋””์ž์ธ ๋ช…์„ธ, ๊ตฌํ˜„ ์ปจ์…‰ ๋ฐ ์ƒ์„ธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ์‹œ)

    hashtag
    Task, internal management

    • Description: ์ž‘์—… ๋‚ด์šฉ์— ๋Œ€ํ•œ ๋ชฉ์ ๊ณผ ์„ค๋ช…์„ ์ ์Šต๋‹ˆ๋‹ค.

    Git ๋ธŒ๋žœ์น˜ ๋ชจ๋ธ

    Git branch๋Š” ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด์— ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์‹œ์— ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ง„ํ–‰ ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ฐ์ž ๋…๋ฆฝ์ ์ธ ์˜์—ญ์—์„œ ์—ฌ๋Ÿฌ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋งํฌarrow-up-right๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

    Github์˜ ํ”„๋กœ์ ํŠธ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๋ช‡ ๊ฐ€์ง€ ๋ธŒ๋žœ์น˜์˜ ์šฉ๋„๋ฅผ ์ •ํ•ด๋‘๊ณ  ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด develop ๋ธŒ๋žœ์น˜๋Š” ์ตœ์‹  ๊ฐœ๋ฐœ ์‚ฌํ•ญ์„ ๊ณ„์† ๋‹ด๊ณ , master ๋ธŒ๋žœ์น˜๋Š” ์•ˆ์ •ํ™” ๋œ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ ๋ธŒ๋žœ์น˜์˜ ์šฉ๋„๋ฅผ ์ •ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ™œ์šฉํ•˜์—ฌ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์šด์˜ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ CUBRID๋Š” ๋งŽ์€ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์—์„œ ๋„์ž…ํ•˜๋Š” Vincent Drissen ๋ธŒ๋žœ์น˜ ๋ชจ๋ธarrow-up-right์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    hashtag
    CUBRID์˜ ๋ธŒ๋žœ์น˜ ๋ชจ๋ธ๊ณผ VD ๋ชจ๋ธ์˜ ์ฐจ์ด

    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๋กœ ๊ฐœ๋ฐœ์„ ์™„๋ฃŒํ•˜๊ธฐ ํž˜๋“  ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ํ”ผ์ณ ๋ธŒ๋žœ์น˜๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”ผ์ณ ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋‹ค์Œ ๋ณ„๋„์˜ ์„น์…˜์—์„œ ๊ธฐ์ˆ ํ•ฉ๋‹ˆ๋‹ค.

    Feature Branch

    ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ฐ ๋ฒ„๊ทธ ์ˆ˜์ •์ด ํ•„์š”ํ•  ๋•Œ์— 'develop' ๋ธŒ๋žœ์น˜๋กœ๋ถ€ํ„ฐ ๋ถ„๊ธฐํ•˜์—ฌ feature ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ธŒ๋žœ์น˜๋Š” forkํ•œ ๋‚ด ์ €์žฅ์†Œ์—์„œ โ€˜developโ€™ ๋ธŒ๋žœ์น˜๋กœ๋ถ€ํ„ฐ ๋ถ„๊ธฐํ•œ ๋ธŒ๋žœ์น˜์™€๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

    Feature Branch์˜ ์ด๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • feature/<์ด๋ฆ„>

    ์˜ˆ์‹œ) feature/javasp, feature/tde, feature/truncate_table

    Release ์„น์…˜
    ์œ„์™€ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ•˜๋ฉด, ์ž๋™์œผ๋กœ Github check์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด ๋ธŒ๋žœ์น˜์˜ ์ฃผ์š” ๋ชฉ์ ์€ ๋ฐ˜์˜ํ•  ์ฝ”๋“œ์˜ ๊ทœ๋ชจ๊ฐ€ ํด ๋•Œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์—ฌ๋Ÿฌ ๋ผ์šด๋“œ์— ๋‚˜๋ˆ„์–ด ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค. โ€˜developโ€™์— ๊ฐœ๋ฐœ ํ•  ๊ธฐ๋Šฅ์˜ ์ผ๋ถ€๋งŒ์„ ๋ฐ”๋กœ ๋ฐ˜์˜ํ•˜์ง€ ์•Š๊ณ  feature ๋ธŒ๋žœ์น˜์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ PR๋กœ ํšจ์œจ์ ์ธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์™€ ๊ฒ€์ฆ ๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„ ์ข€ ๋” ์•ˆ์ •์ ์œผ๋กœ โ€˜developโ€™์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

    git ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐธ๊ณ ํ•˜์—ฌ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ ! Feature Branch๋Š” ์ž„์˜๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ๋Šฅ์˜ ๋ฆฌ๋ทฐ๋ฅผ ์™„๋ฃŒํ•˜๊ณ  develop ๋ธŒ๋žœ์น˜์— ๋จธ์ง€ํ•œ ๊ฒฝ์šฐ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    # 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 ์ƒ์„ฑ

    โ€œ์ด์Šˆ ๋‚ด์šฉ ํ…œํ”Œ๋ฆฟโ€์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

    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

    Repro: ๋ฒ„๊ทธ๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ ˆ์ฐจ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„๊ทธ ์žฌํ˜„์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ ๊ธฐ ๋ณด๋‹ค๋Š” ํ™˜๊ฒฝ ์žฌํ˜„/์Šคํ‚ค๋งˆ ์ƒ์„ฑ/์งˆ์˜ ์‹คํ–‰/์œ ํ‹ธ๋ฆฌํ‹ฐ ์‹คํ–‰ ๋“ฑ์˜ ๋ชจ๋“  ์ ˆ์ฐจ๋ฅผ ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ๋กœ ์žฌํ˜„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. (์žฌํ˜„์„ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ์€ ์ฒจ๋ถ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)
  • Expected Result: ๊ธฐ๋Œ€ ๊ฒฐ๊ณผ (๊ณ ์ณ์ ธ์•ผ ํ•  ์˜ˆ์ƒ ๊ฒฐ๊ณผ)

  • Actual Result: ํ˜„์žฌ ๊ฒฐ๊ณผ (๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฐ๊ณผ)

  • Additional Information: ์ถ”๊ฐ€๋กœ ๋ฒ„๊ทธ ๋ถ„์„๊ณผ ์ดํ•ด์— ๋„์›€์„ ์ฃผ๊ธฐ ์œ„ํ•ด ์ฐธ๊ณ ํ•  ์ž๋ฃŒ๋‚˜ ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ์ ์–ด์ค๋‹ˆ๋‹ค.

  • Acceptance Criteria: ํ•ด๋‹น ์ด์Šˆ์— ๋Œ€ํ•ด ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋””์ž์ธ๊ณผ ๊ตฌํ˜„์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ์„ ํƒํ•˜๊ฒŒ ๋œ ์ด์Šˆ์˜ ๋ฒ”์œ„ ๋‚ด์—์„œ ๋งŒ์กฑํ•ด์•ผ ํ•˜๋Š” ๋™์ž‘/๊ฒฐ๊ณผ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‚ด์šฉ์€ ๋””์ž์ธ/๊ตฌํ˜„์˜ ์™„๋ฃŒ ํŒ๋‹จ(๋ฆฌ๋ทฐ)์˜ ๊ธฐ์ค€์ด ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ •์˜ํ•˜์ง€ ์•Š์€ ๋™์ž‘/๊ฒฐ๊ณผ๊ฐ€ ํฌ๋ฆฌํ‹ฐ์ปฌ ํ•˜๋‹ค๋ฉด ๋””์ž์ธ/๊ตฌํ˜„์— ๋Œ€ํ•ด ์žฌ๊ฒ€ํ† ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 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

    Release/Version
    CBRD-23903arrow-up-right
    CBRD-23894arrow-up-right

    Description

    Task

    Pull Request, Code Review, Code Merge

    hashtag
    Pull Request ๋‚ด์šฉ ๊ตฌ์„ฑ

    Pull Request์˜ ์ œ๋ชฉ์—๋Š” ํ•ญ์ƒ ๊ด€๋ จ๋œ JIRA ์ด์Šˆ ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์Šˆ ๋ฒˆํ˜ธ ์™ธ์— JIRA์˜ ์ œ๋ชฉ PR์˜ ์ œ๋ชฉ์ด ๋™์ผํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. Pull Request์˜ ๋‚ด์šฉ์„ ๊ฐ€์žฅ ์ž˜ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ์ œ๋ชฉ์ด๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

    Pull Request์˜ ์„ค๋ช… ์ฒซ ์ค„์—๋Š” ํ•ญ์ƒ ๊ด€๋ จ๋œ JIRA์˜ ๋งํฌ๋ฅผ ์ฒจ๋ถ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์œ„ํ•ด JIRA์—์„œ ์„ค๊ณ„์— ๊ด€๋ จํ•œ ๋‚ด์šฉ์„ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ด์Šˆ๋‚˜ ์„ค๊ณ„ ๋ฌธ์„œ์—์„œ ๋‹ด์ง€ ๋ชปํ•œ ๊ตฌํ˜„ ๋””ํ…Œ์ผ (ํด๋ž˜์Šค, ํ•จ์ˆ˜, ํŠน์ • ๋กœ์ง) ์˜ ๋ชฉ์ , ๊ตฌํ˜„, ์ฐธ๊ณ ์‚ฌํ•ญ ๋“ฑ์„ ์ž‘์„ฑํ•˜๋ฉด ์ดํ›„ ์ฝ”๋“œ ๋ถ„์„์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

    • Purpose: PR์—์„œ ๋ฐ˜์˜ํ•˜๋ ค๋Š” ์ฝ”๋“œ์˜ ์„ค๋ช…, ๋ชฉ์ ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ธฐ์ˆ ํ•ฉ๋‹ˆ๋‹ค.

    • Implementation: JIRA ์ด์Šˆ๋‚˜ ์„ค๊ณ„์„œ์— ์ž‘์„ฑ๋œ ์„ค๊ณ„ ์™ธ์— ๋ฐ˜์˜ํ•  ์ฝ”๋“œ์™€ ๊ด€๋ จํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๋กœ์ง, ํด๋ž˜์Šค, ํ•จ์ˆ˜ ๋“ฑ์˜ ์„ค๋ช…์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ธฐ์ˆ ํ•ฉ๋‹ˆ๋‹ค.

    • Remarks: ๋‚˜๋จธ์ง€ ์ฐธ๊ณ  ์‚ฌํ•ญ์„ ์ ์Šต๋‹ˆ๋‹ค.

    Pull Request์˜ ์šฐ์ธก์—๋Š” assignees, reviewers, labels, projects, milestone์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Pull Request ์ƒ์„ฑ ์‹œ assignees๋งŒ ์ž…๋ ฅํ•˜๊ณ  ๋‚˜๋จธ์ง€ ํ•„๋“œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. reviewers๋Š” ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์˜ ์„น์…˜์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

    hashtag
    ์ฝ”๋“œ ๋ฆฌ๋ทฐ

    ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ง€์ •/์š”์ฒญํ•˜๊ธฐ ์ „ ๋ฆฌ๋ทฐ์–ด์—๊ฒŒ ์„ค๊ณ„ ๋””์ž์ธ ๋ฆฌ๋ทฐ๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋งŒ์œผ๋กœ๋Š” ๋ณ€๊ฒฝ์˜ ์˜๋„์™€ ๋‚ด์šฉ์„ ๋ช…ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋””์ž์ธ ๋ฌธ์„œ (Concept, Architecture) ๋ฅผ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์›์—๊ฒŒ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ด์ „์— ๊ณต์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • JIRA์— ๋””์ž์ธ ๋ฌธ์„œ๋ฅผ ๊ณต์œ 

    • ๋ฌธ์„œ์˜ ํ˜•์‹์€ ์ž์œ 

    • ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์„ค๊ณ„ ๋””์ž์ธ์—์„œ ๋” ์ดํ•ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž๋ฃŒ ์š”์ฒญ ๊ฐ€๋Šฅ

    ์„ค๊ณ„ ๋””์ž์ธ ๋ฆฌ๋ทฐ๋ฅผ ์™„๋ฃŒํ•˜๋ฉด, ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. PR ์šฐ์ธก์˜ Reviewers๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณ€๊ฒฝ์ด ํฌ์ง€ ์•Š์€ ๊ฐ„๋‹จํ•œ ๋ฒ„๊ทธ ์ˆ˜์ •์ด๋‚˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„์€ ์„ค๊ณ„ ๋””์ž์ธ ๋ฆฌ๋ทฐ์™€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ๋™์‹œ์— ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

    • ์ŠคํŽ™ ๋ณ€๊ฒฝ์ด ์—†์Œ

    • ๊ธฐ๋Šฅ ๋™์ž‘์˜ ๋ณ€๊ฒฝ์ด ์—†์Œ

    • ๊ทœ๋ชจ๊ฐ€ ํฌ์ง€ ์•Š์€ ๋ฆฌํŒฉํ† ๋ง

    hashtag
    ์ž๋™ํ™” ๋„๊ตฌ (CI)

    ํšจ๊ณผ์ /ํšจ์œจ์ ์ธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์œ„ํ•ด Github PR์— ์—ฌ๋Ÿฌ ์ž๋™ํ™” ๋„๊ตฌ๋“ค์„ ๋„์ž…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋“ค์€ ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์„ ๋†’์ด๊ณ  ๋ฆฌ๋ทฐ์–ด๊ฐ€ ๋‹จ์ˆœ ์‹ค์ˆ˜๊ฐ€ ์•„๋‹Œ ์„ค๊ณ„ ๋””์ž์ธ๊ณผ ๋กœ์ง ๋ฌธ์ œ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

    circle-info

    Pull Request ํ•˜๋‹จ์— ๊ฐ ์ž๋™ํ™” ๋„๊ตฌ์˜ ์„ฑ๊ณต์—ฌ๋ถ€๊ฐ€ ํ‘œ์‹œ๋˜๊ณ , Details๋ฅผ ํ†ตํ•˜์—ฌ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจ๊ฐ€ ์žˆ๋‹ค๋ฉด PR์„ ๋ฐ˜์˜ํ•˜๋Š” โ€œSquash and Mergeโ€ ๋ฒ„ํŠผ์ด ๋น„ํ™œ์„ฑํ™” ๋ฉ๋‹ˆ๋‹ค.

    • license: ์˜ฌ๋ฐ”๋ฅธ ํ˜•ํƒœ์˜ ๋ผ์ด์„ผ์Šค ํ—ค๋” ์ฃผ์„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์‹คํŒจํ•˜๊ณ , ์–ด๋–ค ํŒŒ์ผ์„ ํ™•์ธํ•˜๋‹ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ๋Š”์ง€๋Š” Details๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • pr-style: ๋ชจ๋“  Pull Request (PR)๋“ค์ด ๊ฐ๊ฐ์˜ JIRA ์ด์Šˆ์™€ ์—ฐ๊ฒฐ๋˜์–ด์•ผํ•œ๋‹ค๋Š” ๊ทœ์น™์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์ด ์ด์Šˆ ๋ฒˆํ˜ธ๊ฐ€ PR ์ œ๋ชฉ์˜ ์•ž๋ถ€๋ถ„์— ๋ช…์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. pr-style์€ ์ด๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ทœ์น™์„ ์–ด๊ฒผ๋‹ค๋ฉด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

    • code-style: ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ฝ”๋“œ ์œ ์ง€๋ฅผ ์œ„ํ•ด ์ •์˜๋œ ์ฝ”๋“œ์Šคํƒ€์ผ์„ ๋”ฐ๋ฅด๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ์Šคํƒ€์ผ์€ ์ฝ”๋“œ ํฌ๋งทํŒ… ๋„๊ตฌ๋“ค์„ ์ด์šฉํ•˜์—ฌ ์ •์˜ ๋˜๋ฉฐ, code-style์€ ์ด ๋„๊ตฌ๋“ค์„ ์ด์šฉํ•ด ์ •ํ•ด์ง„ ๊ทœ์น™์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋”ฐ๋ฅด๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ทœ์น™๊ณผ ๋‹ค๋ฅด๋‹ค๋ฉด ์‹คํŒจํ•˜๊ณ  PR์˜ suggestion์„ ํ†ตํ•ด ๋ฆฌํฌํŠธ ํ•ฉ๋‹ˆ๋‹ค. ์ง€์›ํ•˜๋Š” ์–ธ์–ด์™€ ์ฝ”๋“œ ํฌ๋งทํŒ… ๋„๊ตฌ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • Build Tests: PR์ด ์ ์šฉ๋œ ํ›„์—๋„ ๊ฐ์ข… ํ™˜๊ฒฝ์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋นŒ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

      • appveyor/pr: Windows

      • travis-ci/pr: Ubuntu

    hashtag
    ๋ธŒ๋žœ์น˜ ๋ณ„ ์ž๋™ํ™” ๋„๊ตฌ ์ˆ˜ํ–‰

    • Build Tests์™€ Regression Tests๋Š” ์ €์žฅ์†Œ ๋‚ด์˜ ๋ชจ๋“  ๋ธŒ๋žœ์น˜์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    • ๋‚˜๋จธ์ง€ ๋„๊ตฌ๋“ค์€ develop, feature/* ๋ฐ ์ผ๋ถ€ ๋ฆด๋ฆฌ์ฆˆ ๋ธŒ๋žœ์น˜ (ํ˜„์žฌ release/11.*)์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ feature ๋ธŒ๋žœ์น˜์˜ ๊ฒฝ์šฐ ์ด๋ฆ„ ๊ทœ์น™์„ ์ ์šฉํ•ด์•ผ github check๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

    hashtag
    ์ฝ”๋“œ ๋จธ์ง€ ์ „ ์ž๋™ํ™” ๋„๊ตฌ์—์„œ ์‹คํŒจ ์‹œ ๊ฐ€์ด๋“œ๋ผ์ธ

    ์ž๋™ํ™” ๋„๊ตฌ์—์„œ ํ†ต๊ณผ๋˜์ง€ ์•Š์•„ ๋ฐ˜์˜ ๋ฒ„ํŠผ์ด ๋น„ํ™œ์„ฑํ™” ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ, CUBRID ํ”„๋กœ์ ํŠธ ๋ฉ”์ธํ…Œ์ด๋„ˆ์™€ ๋…ผ์˜ ํ›„ ๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ์ง์ ‘ ๋ฐ˜์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ์ž๋™ํ™” ๋„๊ตฌ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํŒ๋‹จ๋˜๊ฑฐ๋‚˜, ์ž๋™ํ™” ๋„๊ตฌ์—์„œ ๋ณด๊ณ ๋œ ๋ฌธ์ œ๋ฅผ ๋ฌด์‹œํ•ด๋„ ๋œ๋‹ค๋Š” ํ•ฉ์˜๋ฅผ ๊ฑฐ์นœ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ •์ฑ…์˜ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž๋™ํ™” ๋„๊ตฌ์—์„œ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ์กด์˜ ๋™์ž‘์˜ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. PR์˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ๊ฐœ๋ฐœ์ž์˜ ์˜๋„์™€ ์ƒ๊ด€ ์—†์ด ์ŠคํŽ™ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ–ˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ๋ฉ”์ธํ…Œ์ด๋„ˆ์—๊ฒŒ ๋จธ์ง€ ์š”์ฒญ์„ ํ•˜๋ฉด์„œ ์ž๋™ํ™” ๋„๊ตฌ์—์„œ ์‹คํŒจํ•œ ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜๊ณผ ๊ฒ€ํ†  ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    circle-info

    ์ •์ ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ์ธ cppcheck๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ๋กœ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ์—๋Ÿฌ(error)๋ผ๊ณ  ๋ณด๊ณ ํ•˜๋Š” false-positive ์ผ€์ด์Šค๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณด๊ณ ๋œ ์—๋Ÿฌ๋ฅผ false-positive๋ผ๊ณ  ํŒ๋‹จํ•  ๊ฒฝ์šฐ ๋ฆฌ๋ทฐ์–ด์™€์˜ ํ•ฉ์˜๋ฅผ ๊ฑฐ์ณ ํ•ด๋‹น ์—๋Ÿฌ๋ฅผ ๋ฌด์‹œํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด cppcheck์˜ Inline Suppression ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    arr[10] = 0; // cppcheck-suppress arrayIndexOutOfBounds

    ๊ธฐ๋ณธ์ ์œผ๋กœ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๋ผ์ธ์— ์ฃผ์„์œผ๋กœ suppression ๋ช…๋ น๊ณผ ํƒ€ํ‚ท์—๋Ÿฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

    circle-info

    code-style์˜ ๊ฒฝ์šฐ C์™€ C++์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ๊ทœ์น™๊ณผ ํ™•์ธ ๋„๊ตฌ๋“ค์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋„๊ตฌ๋“ค์€ ํŒŒ์ผ ํƒ€์ž…์„ ํ™•์ธํ•˜์—ฌ ์‹คํ–‰๋˜๋Š”๋ฐ, C ํŒŒ์ผ์—์„œ C++ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์— ์ž˜๋ชป๋œ ํฌ๋งคํŒ… (formatting)์„ ๋ง‰๊ธฐ ์œ„ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด GNU indent์˜ control comments ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    /* *INDENT-OFF* */ <code block> /* *INDENT-ON* */

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์˜ 1.10 Disabling Formatting ์„ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

    hashtag
    ์ฝ”๋“œ ๋จธ์ง€ ์ „ ๊ฒ€์ฆ

    ์ฝ”๋“œ ๋จธ์ง€ ์ „ PR์˜ ์ž๋™ํ™” ๋„๊ตฌ์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋ฏธ๋ฆฌ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด QA ํŒ€์— ๋นŒ๋“œ๋œ ํŒŒ์ผ์„ ์ „๋‹ฌํ•˜์—ฌ ์ˆ˜๋™ ๊ฒ€์ฆ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์˜ ์ ˆ์ฐจ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • ๋นŒ๋“œ ํ›„ ์„ค์น˜ ํŒŒ์ผ์„ QA ํŒ€์— ์ด๊ด€ํ•ฉ๋‹ˆ๋‹ค.

    • ํ…Œ์ŠคํŠธ๋Š” ์ˆ˜๋™์œผ๋กœ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด QA Home ํŽ˜์ด์ง€ ์™ผ์ชฝ ํƒญ์˜ RB-<version>-Manual์—์„œ ํ…Œ์ŠคํŠธํ•œ ๋ฒ„์ „์˜ ๊ฒฐ๊ณผ ๋ฆฌํฌํŠธ๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋‹ค์Œ์˜ ๊ฒฝ์šฐ ์ด ๊ฒ€์ฆ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

    • ๊ฒ€์ฆํ•ด์•ผ ํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋˜๋Š” ์ƒํ™ฉ์„ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

    • QA์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๋ณตํ•ฉ์ ์œผ๋กœ ๋Œ์•„์•ผ ๋ฐœ์ƒํ•˜๋Š” ๋ฒ„๊ทธ

      • ์˜ˆ๋ฅผ ๋“ค์–ด ํ•˜๋‚˜์˜ SQL๊ณผ ๊ฐ„๋‹จํ•œ ๋””๋ฒ„๊น…์œผ๋กœ ๋ฒ„๊ทธ๋ฅผ ์ฐพ๊ธฐ ํž˜๋“  ๊ฒฝ์šฐ, ํ™•์ธ์„ ์œ„ํ•œ ๋””๋ฒ„๊น… ๋กœ๊ทธ๋ฅผ ์ฝ”๋“œ์— ๋„ฃ์–ด๋‘๊ณ  QA ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ๊ฐ€ ๋Œ๋„๋ก ํ•˜์—ฌ ๋ณต์žกํ•œ ๊ฒฝ์šฐ๋ฅผ ํ™•์ธํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

    hashtag
    ์ฝ”๋“œ ๋จธ์ง€

    ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ๋ฅผ ๋จธ์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ž๋™ํ™” ๋„๊ตฌ์—์„œ ๊ฒ€์ฆ๋˜์—ˆ๊ณ , ๋ฆฌ๋ทฐ์–ด๊ฐ€ ๋ชจ๋‘ โ€œApprovedโ€ ํ•œ ๊ฒฝ์šฐ์— ๋จธ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ โ€œSquash and Mergeโ€ ๋ฒ„ํŠผ์ด ํ™œ์„ฑํ™” ๋˜๊ณ , ์ €์žฅ์†Œ์— ๋ฐ˜์˜ํ•˜๋Š” ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ฝ”๋“œ ๋จธ์ง€ (Squash and Merge) ์‹œ ๋‹ค์Œ์˜ ํฌ๋งท์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • Title

      • [์ด์Šˆ ๋ฒˆํ˜ธ] ์ž‘์„ฑ

      • PR์˜ ์ œ๋ชฉ๊ณผ ๋™์ผํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค

    ์˜ˆ์‹œ)

    ์ฐธ๊ณ ๋กœ ์ฝ”๋“œ ๋จธ์ง€ ํ›„ QA ์‹œ์Šคํ…œ์— ํฌ๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฒฝ์šฐ QA ํŒ€์—์„œ ํ•ด๋‹น ๋จธ์ง€๋œ commit์„ revert ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Workflow after code merging์˜ ๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

  • C: GNU Indent 2.2.11

  • C++: astyle 3.1

  • Java: google java format 1.7

  • cppcheck: ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜, NULL ์ฐธ์กฐ ๋“ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ €์ง€๋ฅผ ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ๋ฌธ์ œ๋“ค์ด ์ •์  ๋ถ„์„์„ ํ†ตํ•ด ๋ฐœ๊ฒฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋“ค์€ ์‹ค์ˆ˜ํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ ๋ช…๋ฐฑํ•˜์—ฌ ๋ฌธ๋งฅ์—†์ด ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์ผ์ผ์ด ์ฐพ์•„๋‚ด๊ณ  ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‹ค๋Š” ๊ฒƒ์€ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค. cppcheck์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ์žก์•„๋ƒ…๋‹ˆ๋‹ค. ์—๋Ÿฌ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์‹คํŒจํ•˜๊ณ  PR์— ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌํฌํŠธ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ๋ฆฌํฌํŠธ๋Š” ์—๋Ÿฌ์™€ ๊ฒฝ๊ณ ์˜ ๊ฐฏ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Details ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—๋Ÿฌ๋Š” ์—†๊ณ  ๊ฒฝ๊ณ ๋งŒ ์žˆ๋‹ค๋ฉด ํ…Œ์ŠคํŠธ๋Š” ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.

  • coverage: ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ , ์ˆ˜์น˜๊ฐ€ ๋–จ์–ด์ง„ ๊ฒฝ์šฐ ๋กœ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

  • circleci: build: CentOS 7

  • Regression Tests: ์†Œ์Šค๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์‹ค์ œ๋กœ ์—ฌ๋Ÿฌ SQL ๊ตฌ๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋Šฅ๋“ค์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” QA Home์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋งŽ์€ ํ…Œ์ŠคํŠธ์˜ ์ผ๋ถ€์ด๋ฉฐ, ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด develop์— ๋ฐ˜์˜๋˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์ถฉ์กฑ์š”๊ฑด์ž…๋‹ˆ๋‹ค. ์ €์žฅ์†Œ์—์„œ ํ…Œ์ŠคํŠธ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • circleci: test_sql: ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ์ข… sql ๋ฌธ๋“ค์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ธฐ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    • cicleci: test_medium: ์ด๋ฏธ ๋งŽ์€ ํ…Œ์ด๋ธ”๋“ค๊ณผ ๋ฐ์ดํ„ฐ๋“ค์ด ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ์ข… sql ๋ฌธ๋“ค์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ธฐ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • QA ์ž์›์˜ ๋ฌด๋ถ„๋ณ„ํ•œ ์†Œ๋ชจ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด TDD์˜ ์šฉ๋„๋กœ ์ด ์ ˆ์ฐจ๋ฅผ ํ™œ์šฉํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

    Message
    • ์ฒซ ์ค„์—๋Š” PR๊ณผ ๋™์ผํ•˜๊ฒŒ JIRA ์ด์Šˆ์˜ ๊ฒฝ๋กœ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ๋‘˜์งธ ์ค„์€ ๋น„์›Œ๋‘ก๋‹ˆ๋‹ค.

    • ์…‹์งธ ์ค„๋ถ€ํ„ฐ ๋ฐ˜์˜ํ•˜๋Š” commit์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

    Title

    [CBRD-OOOOO] Pull Request Title

    Description

    Purpose

    N/A

    Implementation

    N/A

    Remarks

    N/A

    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

    ์ฝ”๋“œ ๋ฆฌ๋ทฐ
    cppcheck manualarrow-up-right
    GNU Indent manualarrow-up-right
    ํ…Œ์ŠคํŠธ ์‹คํŒจ (regression) ๋ฐœ์ƒ ์‹œ ์ ˆ์ฐจ ๊ฐ€์ด๋“œ
    codecov ์„œ๋น„์Šคarrow-up-right
    CUBRID/cubrid-testcasesarrow-up-right
    http://jira.cubrid.org/browse/CBRD-OOOOOarrow-up-right

    Communication Channel

    ํ๋ธŒ๋ฆฌ๋“œ์˜ ๊ธฐ์—ฌ์ž๋ฅผ ์œ„ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ฑ„๋„๋กœ Reddit (์˜๋ฌธ)๊ณผ ํ๋ธŒ๋ฆฌ๋“œ Q&A ๊ฒŒ์‹œํŒ (๊ตญ๋ฌธ)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ๋ธŒ๋ฆฌ๋“œ Q&A๋Š” ๋Œ€๋ถ€๋ถ„ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ์™€ ์งˆ๋ฌธ ์œ„์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    ๊ทธ ์™ธ์— ์ด๋ฉ”์ผ, Stack Overflow ๋“ฑ์˜ ์ˆ˜ ๋งŽ์€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ฑ„๋„์œผ๋กœ ๊ธฐ์—ฌ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด๋‚˜ ์ œ์•ˆ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ณต์‹์ ์ธ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ฑ„๋„ (cubrid.com ๋˜๋Š” reddit)์—์„œ ์œ ๋„ํ•˜์—ฌ ์ด์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.