Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NDC 2013 DVCS와 코드리뷰, 자동화를 통한 쾌속개발
Search
reinkim
April 25, 2013
Programming
5
4.8k
NDC 2013 DVCS와 코드리뷰, 자동화를 통한 쾌속개발
reinkim
April 25, 2013
Tweet
Share
More Decks by reinkim
See All by reinkim
NDC 2014: 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
reinkim
3
3.2k
모바일 게임용 PaaS/BaaS 구현사례와 디자인 트레이드오프
reinkim
5
3.1k
Other Decks in Programming
See All in Programming
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
ECS Service Connectのこれまでのアップデートと今後のRoadmapを見てみる
tkikuc
2
250
Contemporary Test Cases
maaretp
0
140
TypeScriptでライブラリとの依存を限定的にする方法
tutinoko
2
660
as(型アサーション)を書く前にできること
marokanatani
10
2.6k
距離関数を極める! / SESSIONS 2024
gam0022
0
280
Jakarta EE meets AI
ivargrimstad
0
610
광고 소재 심사 과정에 AI를 도입하여 광고 서비스 생산성 향상시키기
kakao
PRO
0
170
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
330
Why Jakarta EE Matters to Spring - and Vice Versa
ivargrimstad
0
1.1k
Ethereum_.pdf
nekomatu
0
460
Realtime API 入門
riofujimon
0
150
Featured
See All Featured
Faster Mobile Websites
deanohume
305
30k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
How GitHub (no longer) Works
holman
310
140k
Gamification - CAS2011
davidbonilla
80
5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Adopting Sorbet at Scale
ufuk
73
9.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
A Philosophy of Restraint
colly
203
16k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Transcript
%7$4৬ܻ٘࠭ ӒܻҊزചܳాೠ ࣘѐߊ ӣ SFJO!VQOMPSH
ߊࣗѐ ࣗਝযূפয _ূॿࣗѱࢲߡѐߊ _֏टܻইѱࢲ࠺झ"1*ѐߊ _ ੌҗஂ۽$ 1ZUIPO۽Ӓې߁ਸפ
ਵ۽ ࡅܰѱ ѐߊೞҊर
ߡӒח ਵݶ જѷ
ߡӒܳח ۴ೠ ߑߨ
పझ ب ѐߊ
ਬӝמాపझ۽ߡӒח࠺ਯ Not Detected 27% Detected by Test 73% 4PVSDF$PEF$PNQMFUF
ޖਸ ؊ೞݶ ബҗੌө
٣ੋܻ٘࠭۽ߡӒח࠺ਯ Not Detected 11% Detected by Review 89% 4PVSDF$PEF$PNQMFUF
٘٣ੋਸ औѱ ܻ࠭ೞ۰ݶ
ױਤ۽ੌೠ
زച
ѐߏݡӝ
ѐߊ۽ࣁझ
٘ܳࢿೞҊࣗী֍ਸٸө 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
ࣗীח٘ܳѐߊജ҃ਵ۽ 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
જ۽ࣁझܳ ਬبೞח بҳܳॳ
1VTI
7FSTJPODPOUSPMgit
সױਤgit topic-branch
ѐ߹ѐߊо #SBODIױਤ۽ ة݀ਵ۽ੌೞӝ
ӝמਸೠޘਵ۽ 45f1cf55 a8d8323 6162b7e Topic #2 Topic #1 Bug #31
Bug #47 Topic #2-1 Topic #1-1 ӝמೞաܳUPQJDCSBODI۽স
Push Review Server 45f1cf55 a8d8323 6162b7e Topic #2 Topic #1
Bug #31 Bug #47 Topic #2-1 Topic #1-1 push ٘সաݶܻ࠭ࢲߡ۽ࠁմ
#VJME5FTU 7FSJGZ
࠽٘ࠈزਵ۽࠽٘ ӝ҅оੜೞחੌӝ҅о
$POUJOVPVTCVJMEjenkins
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.ীࢲ࠽٘పझ೧ࢲഛੋೠ
పझ ࠽٘ೞҊաࢲ زਵ۽పझ
పझपಁ ۽ӒېݠоࣻೞҊ ӝ҅оపझ߈ࠂ
3FWJFX
࠽٘ࢲߡѨࢎܳాҗೞݶ ੋрܻ٘࠭ܳѢ
эݽৈࢲܻ٘࠭ 5FYU From https://commons.wikimedia.org/wiki/File:Meeting_room_for_working_groups.JPG
gerritਢীࢲܻ٘࠭
زܐܻ࠭ܳ߉Ҋ ೖ٘ߔীٮۄࣻೠ
45f1cf55 a8d8323 6162b7e PatchSet #1 Review Server Push patchset #1
git commit --amend 45f1cf55 a8d8323 6162b7e PatchSet #2 PatchSet #1
Review Server edit Push patchset #1 Push patchset #2
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 ೖ٘ߔਸ߉Ҋࣻೠ٘ܳदܻ࠭
$PNNJU .FSHF#VJME
$PNNJU Review Server Repository review +2 5. commit review +1
review +2 ӛੋܻ࠭ೖ٘ߔਸ߉Ҋաݶࣗীcommit
ܻ٘࠭оդ٘ח ࢎਊೡࣻѱ࠽٘ೠ
ಁఃࢤࢿ merge build Versioned Package Private Package Server upload package
Versioned Package Versioned Package Reviewed Src Code Snapshot റীॳӝಞೞب۾ߡࠢੋಁఃܳࢤࢿ೧ࢲղࠁմ
6QMPBE1BDLBHFT %FQMPZ
࠽٘ೠಁఃܳ ߓನࢲߡীৢܽ
ߓನࢲߡಁఃҙܻदझమࢎਊ
1BDLBHJOHDebian Apt
৵ زച ࢎਊೞחۖಬ 04 য ীౠച ઓࢿܻ ߡҙܻ Ӕాઁ
۽ஸ۞ࢎࢸ QSJWBUF ࣗ ঐഐ೧द۽ਤৈࠗపझоמ ߓನࢸҙܻೞחోҗোزੜؽ
ಁఃܳৢܻݶ ѐߊࢲߡܳসؘೠ
%FQMPZ زചػ ߓನ߂সؘ
ৈ۞оߑߨഒਊ زചػߑߨਸݢॳݴ "QUಁఃਊ ࢲߡ߹ 1VQQFUࢸਊ ࣽରਵ۽ܻೡࠗ࠙ਊTIFMMTDSJQU Ӓېبউغݶ ࢎۈࣚਵ۽
5FTU
ѐߊࢲߡѐߊѐѐੋ ࢜ಁఃܳ ࢸೞҊపझೠ
ѐߊపझѐߏݡӝ
ॄࠁঋਵݶޅਸޙઁٜبইঠ
ߡӒоݶ ࠛಞ೧ࢲۄب ࡈܻ ࣻೞѱػ
ߡӒܳҊաࢲ द߈ࠂ
ۧѱ֙
ѐߊীࢎਊೞחبҳ
5PPMTPG5SBEF (JU +FOLJOT 9FO4FSWFS (FSSJU FNBJM*3$$BNQGJSF "15
(JU࠙ߡҙܻبҳ $POGMJDUܻ ࣘب ݆ਬܻ౭ ழޭפ౭ޙࢲ ҙܻস
5SFOET git, svn, perforce
$POGMJDUܻ
ਵ۽ੌೞӝীࢤӝחੌ r100 r101 r102 Repository User A r102 A1 A2
r102 B1 User B
$POGMJDUоߊࢤ೮ਸٸ r100 r101 r102 Repository B1' A1 A2 May cause
CONFLICTS r102 B1 User B 47/١ীࢶDPOGMJDUܳউਵ۽ܻೡࣻױহ
%7$4҃merge r101 r102 Repository merge A1 A2 B1 #ਵ۽غجইоࢲݻߣۄبददب೧ࠅࣻ
ࡅܰ TWOC[S৬ਬࢎIUUQUILPDIHJUIVCDPNXIZHJUJTCFUUFSHJUJTGBTU
ҙ۲بҳо݆
(JU)VC$MJFOU (JU)VCীࢲߓನೞח(6*DMJFOU 8JOEPXT.BD
4PVSDF5SFF "UMBTTJBOীࢲߓನೞח(6*DMJFOU 8JOEPXT.BD
ా҅दпച য়ۄੋࣗۄࢲ بҳٜܳ݅ӝоऔ
ా҅दпച BTBTFSWJDF ਬܐࢲ࠺झ۽۠Ѧোزೞӝب
ٜ݅যॳѢա $PNNJUदр࠙ನ
ޛۿ݅חѤইתפ
(JUਸॳӝ൨ٚ #JOBSZੌܻࣘب ٣۩ఠܻױਤ۽оઉয়חѪࠛо ٣झҕр ӂೠҙܻ ੌࠗחHFSSJUޖ݃दெસפ
+FOLJOT࠽٘ࢲߡ ۞Ӓੋনೞ (JUHFSSJUਗ एࢸࢎਊߨ ਢӝ߈ ࢎਊೞחҔ݆ইޙઁоࢤ ҂ਸٸ೧Ѿೞӝऔ Jenkins Project http://jenkins-ci.org
5SFOET Jenkins, CruiseControl
+FOLJOTEBTICPBSE 7.߹प೯࢚కହ 1SPKFDU߹࠽࢚٘ടହ
+FOLJOTܳਊ೧ࢲ ഛೞӝएਢ۠ূ٘ۢॳݴ 7.ٜਸTMBWFOPEFইܲ࠽٘সਸೠ ৈ۞TMBWFOPEFоਵݶزदীৈ۞ழਸܻೡ ࣻ ࠽٘పझഛੋਊب۽بॳҊ ܻ࠭оդ٘ܳಁఃೞחਊب۽بॵ
9FO4FSWFS࠽٘ജ҃ )ZQFSWJTPSܳझ݀۽ઁ যೞӝऔ 7.ࢤࢿઁࢎਊزച 04ਊب߹7.మ݁ਸળ ࠺ೞҊࢎਊೞӝрಞ ࢿמ Xen Project http://xen.org
эജ҃ীࢲ࠽٘ೡࣻب۾ 9FOӝ߈7.ࢎਊ
&YBNQMF#VJMETDSJQU #
&YBNQMF#VJMETDSJQU #
&YBNQMF#VJMETDSJQU #
(FSSJUܻ٘࠭بҳ ਢӝ߈ܻ࠭6* সߑधࢶఖоמ زചೞӝए HJUױࠁ৮ ழޭפ౭ޙࢲച ࢿמ Gerrit Code Review
http;//gerrit.googlecode.com
5SFOET gerrit, Crucible, ReviewBoard
ਢಕউীࢲ ܻ٘࠭೧ࠁӝ
HFSSJUoverview ܻ࠭ੋղܻ٘࠭ೡܻ٘࠭৮ܐػղ٘ݾ۾
HFSSJUdiff. view ߸҃ࢎ೦ਸೞաঀѨషೞݶࢲীೠѼਸઁदೠ
HFSSJUreview-vote ࣗী֍ਸ Ѽਸٜਸ ୶оসೡ
(FSSJUਸॄࢲ ౠHJUসܴਬبೞӝ
HJUnon-linear history ҭࠂೠѐߊ۱ਸࠁѱؼࣻب
HJU HFSSJUlinear history TWOQFSGPSDFীࢲࠅࣻחੌࢶ۱ਸъઁೡࣻ
ҙܻزചಞ HFSSJUೞաоHJU TTI SFWJFXಕܳҳز ۽ં࠳ے߹ӂೠҙܻ ࢿמഋࢎীࢸغযపझ BOESPJE FDMJQTF MJCSFPGGJDF
৻ࠗبҳٜܳ݅ӝਤೠ3&45GVM"1*ઁҕ
"15ಁఃҙܻदझమ %FCJBO-JOVY6CVOUVӝ ࠄಁఃҙܻ ߧਊࢿ݆ޙࢲ ࢎࢸࢲߡ ঐഐ೧दܳਊೠޖѾ ࢿѨૐ ߓನࢲߡחױࣽਢࢲߡ Debian Project
http://debian.org
ઓࢿ ߡҙܻ ಁఃݒפೡ ࣗझҙܻبҳܻ࠺ࠁܳਊೡࣻب ౠߡۄ࠳۞ܻܳॳݶ೧ߡਸਊೞب ۾ъઁ MJCGPP MJCCBS MJCCB[ పझࢲ࠺झೡٸ۠ઁೠਸਊ೧ࢲزച
ಁఃࣗࢲߡ ৻ࠗࣗоוܻݶղࠗࣗী۞ ৻ࠗীҕѐೞঋਸಁఃחٮ۽ ղࠗ ࢲ࠺झ ѐߊపझ۽؋࣌ജ҃ਸࣗ۽ҳ࠙ ਃীٮۄੋૐӝמਸ֍ӝب IUUQ T BVUI
GUQ T BVUI TTI
/PUJGJDBUJPO ழ࠽ܻ٘࠭ঌܿਊ স೯࢚ടਸ࠺زӝਵ ۽ঌইࠅࣻѱ ѪѪदب
/PUJGJDBUJPOFNBJM ݫदܳࠁղӝऔ HFSSJUKFOLJOTীࢲӝࠄ ਵ۽ਗ ҳࢿਗٜઃоחࠅѢۄ Ҋਸࣻ
/PUJGJDBUJPOFNBJM ۽Ӓܳթӝӝਤ೧FNBJMই࠳ܳॄঠೣ ޙݓਸঌইࠁӝ൨ٜ ࠈৈ۞ѐݶ ױߑೱ Ӓېࢲޥоܲߑߨਸॄࠁӝ۽
/PUJGJDBUJPO*3$ ߹بۄਃ ݫदࠁղחࠗ࠙োѾਸ ਬ೧ঠೣ ޅࠁմ ۽Ӓܳऔѱࠁ۰ݶ߄ࢲ ਃ HJUHFSSJUCPUਗؽ
/PUJGJDBUJPO$BNQGJSF ۄחӒրਢ ࠈ3&45GVM"1*ࢎਊ ޙݓਬ օ दрࣽ ۽Ӓ߂Ѩ࢝ӝמઁҕ ੌҕਬоए ਬܐࢲ࠺झ ডਘ
ੋ Copyright (c) 37 Signals
ਃড
ߡӒܳҊर Ӓࣻױੋܻ࠭ܳೞӝऔب۾
ܻ࠭оߣ೧ӝएפ ߑ೧ਃࣗܳ୭ೠੋ
HJUਸॄࢲੌਸଂѐࢲೞҊ
࠽٘పझزച۽ ࢎۈਃೠࠗ࠙ਸҊ
Ӕೞӝऔѱਢীࢲ ܻ٘ܳ࠭ೡࣻѱೞҊ
ܻ࠭ীࢲޅחࠗ࠙ਸਤ೧ ѐߏݡӝపझ
Q & A