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
202507_ADKで始めるエージェント開発の基本 〜デモを通じて紹介〜(奥田りさ)The Basics of Agent Development with ADK — A Demo-Focused Introduction
risatube
PRO
6
1.4k
中級グラフィックス入門~効率的なメッシュレット描画~
projectasura
4
2.6k
構文解析器入門
ydah
7
2.1k
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
140
Claude Code と OpenAI o3 で メタデータ情報を作る
laket
0
110
Comparing decimals in Swift Testing
417_72ki
0
170
Webinar: AI-Powered Development: Transformiere deinen Workflow mit Coding Tools und MCP Servern
danielsogl
0
110
リッチエディターを安全に開発・運用するために
unachang113
1
370
DynamoDBは怖くない!〜テーブル設計の勘所とテスト戦略〜
hyamazaki
0
200
Strands Agents で実現する名刺解析アーキテクチャ
omiya0555
1
120
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
38
11k
CEDEC 2025 『ゲームにおけるリアルタイム通信への QUIC導入事例の紹介』
segadevtech
3
820
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
73
5k
Producing Creativity
orderedlist
PRO
347
40k
RailsConf 2023
tenderlove
30
1.2k
Optimizing for Happiness
mojombo
379
70k
Scaling GitHub
holman
461
140k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
How STYLIGHT went responsive
nonsquared
100
5.7k
Designing Experiences People Love
moore
142
24k
The Cult of Friendly URLs
andyhume
79
6.5k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
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