Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NDC 2013 DVCS와 코드리뷰, 자동화를 통한 쾌속개발

reinkim
April 25, 2013

NDC 2013 DVCS와 코드리뷰, 자동화를 통한 쾌속개발

reinkim

April 25, 2013
Tweet

More Decks by reinkim

Other Decks in Programming

Transcript

  1. %7$4৬௏ܻ٘࠭ ӒܻҊ੗زചܳాೠ ௝ࣘѐߊ ӣ૓਌ SFJO!VQOMPSH

  2. ߊ಴੗ࣗѐ ࣗ೐౟ਝযূ૑פয _ূॿࣗ೐౟ѱ੐ࢲߡѐߊ _֏ट௏ܻইѱ੐ࢲ࠺झ"1*ѐߊ _ ੌҗஂ޷۽$ 1ZUIPO೐۽Ӓې߁ਸ೤פ׮

  3. ੘਷౱ਵ۽ ࡅܰѱ ѐߊೞҊर׮

  4. ߡӒח ੸঻ਵݶ જѷ׮

  5. ߡӒܳ઴੉ח ੷۴ೠ ߑߨ

  6. పझ౟ ઱ب ѐߊ

  7. ਬ׫ӝמా೤పझ౟۽ߡӒ଺ח࠺ਯ Not Detected 27% Detected by Test 73% 4PVSDF$PEF$PNQMFUF

  8. ޖ঺ਸ ؊ೞݶ ബҗ੸ੌө

  9. ٣੗ੋ௏ܻ٘࠭۽ߡӒ੟ח࠺ਯ Not Detected 11% Detected by Review 89% 4PVSDF$PEF$PNQMFUF

  10. ௏٘٣੗ੋਸ औѱ ܻ࠭ೞ۰ݶ

  11. ੘਷ױਤ۽ੌೠ׮

  12. ੗زച

  13. ѐߏݡӝ

  14. ѐߊ೐۽ࣁझ

  15. ௏٘ܳ੘ࢿೞҊ੷੢ࣗী֍ਸٸө૑ 45f1cf55 a8d8323 6162b7e Bug #31 Topic #1 Topic #1-1

    Review Server Build Server 1. push 2. build & test 3. verify Repository peer devs 4. review 5. commit dev
  16. ੷੢ࣗী੓ח௏٘ܳѐߊജ҃ਵ۽ Repository Review Server 5. commit Development Servers Build Server

    6. merge build Package Server 7. upload packages  8-a. deploy 8-b. deploy (devs. per se) 9. test 7. upload packages 7. upload packages
  17. જ਷೐۽ࣁझܳ ਬبೞח بҳܳॳ੗

  18. 1VTI

  19. 7FSTJPODPOUSPMgit

  20. ੘সױਤgit topic-branch

  21. ѐ߹ѐߊ੗о #SBODIױਤ۽ ة݀੸ਵ۽ੌೞӝ

  22. ੘਷ӝמਸೠޘ਺ਵ۽ 45f1cf55 a8d8323 6162b7e Topic #2 Topic #1 Bug #31

    Bug #47 Topic #2-1 Topic #1-1 ӝמೞաܳUPQJDCSBODI۽੘স
  23. Push Review Server 45f1cf55 a8d8323 6162b7e Topic #2 Topic #1

    Bug #31 Bug #47 Topic #2-1 Topic #1-1 push ௏٘੘স੉՘աݶܻ࠭ࢲߡ۽ࠁմ׮
  24. #VJME5FTU 7FSJGZ

  25. ࠽٘ࠈ੗زਵ۽࠽٘ ӝ҅оੜೞחੌ਷ӝ҅о

  26. $POUJOVPVTCVJMEjenkins

  27. Build, Test and Verify Modified Source Code Review Server Build

    Server 2. build & test 3. verify push Builder VM Tester VM 2a. Build 2b. Run tests ழ޿݃׮7.ীࢲ࠽٘పझ౟೧ࢲഛੋೠ׮
  28. పझ౟ ࠽٘ೞҊաࢲ ੗زਵ۽పझ౟

  29. పझ౟पಁ ೐۽Ӓېݠоࣻ੿ೞҊ ӝ҅оపझ౟߈ࠂ

  30. 3FWJFX

  31. ࠽٘ࢲߡ੄Ѩࢎܳాҗೞݶ ੋр੄௏ܻ٘࠭ܳѢ஘׮

  32. ׮э੉ݽৈࢲ௏ܻ٘࠭ 5FYU From https://commons.wikimedia.org/wiki/File:Meeting_room_for_working_groups.JPG

  33. gerritਢীࢲ௏ܻ٘࠭

  34. زܐ੄ܻ࠭ܳ߉Ҋ ೖ٘ߔীٮۄࣻ੿ೠ׮

  35. 45f1cf55 a8d8323 6162b7e PatchSet #1 Review Server Push patchset #1

  36. git commit --amend 45f1cf55 a8d8323 6162b7e PatchSet #2 PatchSet #1

    Review Server edit Push patchset #1 Push patchset #2
  37. 45f1cf55 a8d8323 6162b7e PatchSet #2 PatchSet #1 PatchSet #3 Review

    Server edit edit Push patchset #1 Push patchset #2 Push patchset #3 git commit --amend ೖ٘ߔਸ߉Ҋࣻ੿ೠ௏٘ܳ׮दܻ࠭
  38. $PNNJU .FSHF#VJME

  39. $PNNJU Review Server Repository review +2 5. commit review +1

    review +2 ӛ੿੸ੋܻ࠭ೖ٘ߔਸ߉Ҋաݶ੷੢ࣗীcommit
  40. ௏ܻ٘࠭о՘դ௏٘ח ࢎਊೡࣻ੓ѱ࠽٘ೠ׮

  41. ಁః૑ࢤࢿ merge build Versioned Package Private Package Server upload package

    Versioned Package Versioned Package Reviewed Src Code Snapshot ੉റীॳӝಞೞب۾ߡ੹ࠢੋಁః૑ܳࢤࢿ೧ࢲղࠁմ׮
  42. 6QMPBE1BDLBHFT %FQMPZ

  43. ࠽٘ೠಁః૑ܳ ߓನࢲߡীৢܽ׮

  44. ߓನࢲߡಁః૑ҙܻदझమࢎਊ

  45. 1BDLBHJOHDebian Apt

  46. ৵ ੗زച ࢎਊೞח೒ۖಬ 04 ঱য  ৔৉ীౠച ੄ઓࢿ୊ܻ ߡ੹ҙܻ ੽Ӕాઁ

    ۽ஸ޷۞ࢎࢸ QSJWBUF ੷੢ࣗ ঐഐ೟੸೧द۽૓ਤৈࠗపझ౟оמ ߓನࢸ੿ҙܻೞחోҗোز੉ੜؽ
  47. ಁః૑ܳৢܻݶ ѐߊࢲߡܳসؘ੉౟ೠ׮

  48. %FQMPZ ੗زചػ ߓನ߂সؘ੉౟

  49. ৈ۞о૑ߑߨഒਊ ੗زചػߑߨਸݢ੷ॳݴ "QUಁః૚੉ਊ ࢲߡ߹ 1VQQFUࢸ੿੉ਊ ࣽର੸ਵ۽୊ܻೡࠗ࠙ਊ੄TIFMMTDSJQU Ӓېبউغݶ ࢎۈ੉ࣚਵ۽

  50. 5FTU

  51. ѐߊࢲߡѐߊ੗ѐѐੋ੉ ࢜ಁః૑ܳ ࢸ஖ೞҊపझ౟ೠ׮

  52. ѐߊపझ౟ѐߏݡӝ

  53. ॄࠁ૑ঋਵݶޅ଺ਸޙઁٜب଺ইঠ

  54. ߡӒо੓׮ݶ ࠛಞ೧ࢲۄب ࡈܻ ࣻ੿ೞѱػ׮

  55. ߡӒܳ੟Ҋաࢲ  ׮द߈ࠂ

  56. ੉ۧѱ֙

  57. ѐߊীࢎਊೞחبҳ

  58. 5PPMTPG5SBEF (JU +FOLJOT 9FO4FSWFS (FSSJU FNBJM*3$$BNQGJSF "15

  59. (JU࠙࢑ߡ੹ҙܻبҳ $POGMJDU୊ܻ ࣘب ݆਷ਬ౰ܻ౭ ழޭפ౭ޙࢲ ੸਷ҙܻ੘স

  60. 5SFOET git, svn, perforce

  61. $POGMJDU୊ܻ

  62. ౱ਵ۽ੌೞӝীࢤӝחੌ r100 r101 r102 Repository User A r102 A1 A2

    r102 B1 User B
  63. $POGMJDUоߊࢤ೮ਸٸ r100 r101 r102 Repository B1' A1 A2 May cause

    CONFLICTS r102 B1 User B 47/١ীࢶDPOGMJDUܳউ੿੸ਵ۽୊ܻೡࣻױ੉হ׮
  64. %7$4੄҃਋merge r101 r102 Repository merge A1 A2 B1 #ਵ۽غجইоࢲݻߣ੉ۄب׮ददب೧ࠅࣻ੓׮

  65. ࡅܰ׮ TWO਷C[S৬ਬࢎIUUQUILPDIHJUIVCDPNXIZHJUJTCFUUFSHJUJTGBTU

  66. ҙ۲بҳо݆׮

  67. (JU)VC$MJFOU (JU)VCীࢲߓನೞח(6*DMJFOU 8JOEPXT.BD

  68. 4PVSDF5SFF "UMBTTJBOীࢲߓನೞח(6*DMJFOU 8JOEPXT.BD

  69. ా҅दпച য়೐ۄੋ੷੢ࣗۄࢲ بҳٜܳ݅ӝоऔ׮

  70. ా҅दпച BTBTFSWJDF ਬܐࢲ࠺झ۽੉۠Ѧোزೞӝب

  71. ഑਷ٜ݅যॳѢա $PNNJUदр࠙ನ

  72. ޛۿ੢੼݅੓חѤইתפ׮

  73. (JUਸॳӝ൨ٚ੼ #JOBSZ౵ੌ୊ܻࣘب ٣۩ఠܻױਤ۽оઉয়חѪࠛо ٣झ௼ҕр ӂೠҙܻ ੌࠗחHFSSJU੉ޖ݃दெસפ׮

  74. +FOLJOT࠽٘ࢲߡ ೒۞Ӓੋ੉׮নೞ׮ (JUHFSSJU૑ਗ ए਍ࢸ੿ࢎਊߨ ਢӝ߈ ࢎਊೞחҔ੉݆ইޙઁоࢤ ҂ਸٸ೧Ѿೞӝऔ׮ Jenkins Project http://jenkins-ci.org

  75. 5SFOET Jenkins, CruiseControl

  76. +FOLJOTEBTICPBSE 7.߹प೯࢚కହ 1SPKFDU߹࠽࢚٘ടହ

  77. +FOLJOTܳ੉ਊ೧ࢲ ഛ੢ೞӝए਍ਢ೐۠౟ূ٘୊ۢॳݴ 7.ٜਸTMBWFOPEF࢖ই׮ܲ࠽٘੘সਸೠ׮ ৈ۞TMBWFOPEFо੓ਵݶزदীৈ۞ழ޿ਸ୊ܻೡ ࣻ੓׮ ࠽٘పझ౟ഛੋਊب۽بॳҊ ܻ࠭о՘դ௏٘ܳಁః૚ೞחਊب۽بॵ׮

  78. 9FO4FSWFS࠽٘ജ҃ )ZQFSWJTPSܳझ௼݀౟۽ઁ যೞӝऔ׮ 7.ࢤࢿ࢏ઁࢎਊ੗زച 04ਊب߹7.మ೒݁ਸળ ࠺ೞҊࢎਊೞӝрಞ ࢿמ Xen Project http://xen.org

  79. э਷ജ҃ীࢲ࠽٘ೡࣻ੓ب۾ 9FOӝ߈੄7.ࢎਊ

  80. &YBNQMF#VJMETDSJQU  #

  81. &YBNQMF#VJMETDSJQU  #

  82. &YBNQMF#VJMETDSJQU  #

  83. (FSSJU௏ܻ٘࠭بҳ ਢӝ߈੄ܻ࠭6* ౱੄੘সߑधࢶఖоמ ੗زചೞӝए਑ HJUױ੼ࠁ৮ ழޭפ౭ޙࢲച ࢿמ Gerrit Code Review

    http;//gerrit.googlecode.com
  84. 5SFOET gerrit, Crucible, ReviewBoard

  85. ਢಕ੉૑উীࢲ ௏ܻ٘࠭೧ࠁӝ

  86. HFSSJUoverview ܻ࠭઺ੋղ௏ܻ٘࠭ೡ௏ܻ٘࠭৮ܐػղ௏٘ݾ۾

  87. HFSSJUdiff. view ߸҃ࢎ೦ਸೞաঀѨషೞݶࢲ੉ী؀ೠ੄Ѽਸઁदೠ׮

  88. HFSSJUreview-vote ੷੢ࣗী֍ਸ૑  ੄Ѽਸٜਸ૑   ୶о੘সೡ૑  

  89. (FSSJUਸॄࢲ ౠ੿HJU੘স൒ܴਬبೞӝ

  90. HJUnon-linear history ҭ੢൤ࠂ੟ೠѐߊ੉۱ਸࠁѱؼࣻب੓׮

  91. HJU HFSSJUlinear history TWOQFSGPSDFীࢲࠅࣻ੓חੌ૒ࢶ੄੉۱ਸъઁೡࣻ੓׮

  92. ҙܻ੗زചಞ੄ HFSSJUೞաоHJU TTI SFWJFXಕ੉૑ܳҳز ೐۽ં౟࠳ے஖߹ӂೠҙܻ ࢿמ؀ഋࢎ੉౟ীࢸ஖غযపझ౟ BOESPJE  FDMJQTF MJCSFPGGJDF

     ৻ࠗبҳٜܳ݅ӝਤೠ3&45GVM"1*ઁҕ
  93. "15ಁః૑ҙܻदझమ %FCJBO-JOVY6CVOUVӝ ࠄಁః૑ҙܻ੗ ߧਊࢿ݆਷ޙࢲ ࢎࢸࢲߡ ঐഐ೟੸೧दܳ੉ਊೠޖѾ ࢿѨૐ ߓನࢲߡחױࣽਢࢲߡ Debian Project

    http://debian.org
  94. ੄ઓࢿ ߡ੹ҙܻ ಁః૑ݒפ੷੄઱৉ೡ ࣗझҙܻبҳ੄ܻ࠺੹੿ࠁܳ੉ਊೡࣻب੓׮ ౠ੿ߡ੹੄ۄ੉࠳۞ܻܳॳݶ೧׼ߡ੹ਸ੉ਊೞب ۾ъઁ MJCGPP MJCCBS MJCCB[ పझ౟ࢲ࠺झೡٸ੉۠ઁೠਸ੉ਊ೧ࢲ੗زച

  95. ಁః૑੷੢ࣗࢲߡ ৻ࠗ੷੢ࣗоוܻݶղࠗ੷੢ࣗী޷۞ ৻ࠗীҕѐೞ૑ঋਸಁః૑חٮ۽ ղࠗ ࢲ࠺झ ѐߊపझ౟೐۽؋࣌ജ҃ਸ੷੢ࣗ۽ҳ࠙ ೙ਃীٮۄੋૐӝמਸ֍ӝب IUUQ T BVUI

    GUQ T BVUI TTI 
  96. /PUJGJDBUJPO ழ޿࠽ܻ٘࠭ঌܿਊ ੘স૓೯࢚ടਸ࠺زӝ੸ਵ ۽ঌইࠅࣻ੓ѱ ੉Ѫ੷Ѫदب઺

  97. /PUJGJDBUJPOFNBJM ݫद૑੉޷૑ܳࠁղӝऔ׮ HFSSJU഑਷KFOLJOTীࢲӝࠄ ੸ਵ۽૑ਗ ҳࢿਗٜ੉঱ઃоחࠅѢۄ Ҋ޺ਸࣻ੓਺

  98. /PUJGJDBUJPOFNBJM ۽Ӓܳթӝӝਤ೧FNBJMই஠੉࠳ܳॄঠೣ ޙݓਸঌইࠁӝ൨ٜ׮ ࠈ੉ৈ۞ѐݶ ױߑೱ Ӓېࢲޥо׮ܲߑߨਸॄࠁӝ۽

  99. /PUJGJDBUJPO*3$ ߹ب௿ۄ੉঱౟೙ਃ ݫद૑ࠁղחࠗ࠙੉োѾਸ ਬ૑೧ঠೣ ੉޷૑ޅࠁմ׮ ۽Ӓܳऔѱࠁ۰ݶ߄਍ࢲ೙ ਃ HJUHFSSJUCPU૑ਗؽ

  100. /PUJGJDBUJPO$BNQGJSF ௿ۄ੉঱౟חӒրਢ ࠈ਷3&45GVM"1*ࢎਊ ޙݓਬ૑ ଻օ दрࣽ ۽Ӓ߂Ѩ࢝ӝמઁҕ ੉޷૑౵ੌҕਬоए਑ ਬܐࢲ࠺झ ডਘ

    ੋ׼ Copyright (c) 37 Signals
  101. ਃড

  102. ߡӒܳ઴੉Ҋर׮ Ӓࣻױੋܻ࠭ܳೞӝऔب۾

  103. ܻ࠭оߣ੟೧૑ӝए਋פ ߑ೧ਃࣗܳ୭؀ೠ઴ੋ׮

  104. HJUਸॄࢲੌਸଂѐࢲೞҊ

  105. ࠽٘పझ౟੗زച۽ ࢎۈ੉೙ਃೠࠗ࠙ਸ઴੉Ҋ

  106. ੽Ӕೞӝऔѱਢীࢲ ௏ܻ٘ܳ࠭ೡࣻ੓ѱೞҊ

  107. ܻ࠭ীࢲޅ੟חࠗ࠙ਸਤ೧ ѐߏݡӝపझ౟

  108. Q & A