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
How We Use Jenkins?
Search
Naoto Takai
January 12, 2015
Programming
21
8.4k
How We Use Jenkins?
At Jenkins user conference 2015 Tokyo
Naoto Takai
January 12, 2015
Tweet
Share
More Decks by Naoto Takai
See All by Naoto Takai
Building the Perfect Custom Keyboard
takai
1
590
キースイッチ潤滑入門 / A Brief Introduction to Lube MX Switches
takai
2
790
みなさん、分かっていますか / What is a difference?
takai
1
900
The Design Philosophy of Kuroko2
takai
3
2.2k
Agile and DevOps with Ruby
takai
2
1.1k
Software Quality and Testing #1
takai
5
670
Microservices in Action
takai
37
5.3k
Ruby App on Netflix Microservices Stack
takai
6
1.1k
COOKPAD and Test Automation
takai
19
2.8k
Other Decks in Programming
See All in Programming
Vibe Coding の話をしよう
schroneko
12
3.3k
カウシェで Four Keys の改善を試みた理由
ike002jp
1
110
파급효과: From AI to Android Development
l2hyunwoo
0
140
スモールスタートで始めるためのLambda×モノリス(Lambdalith)
akihisaikeda
2
300
MCP調べてみました! / Exploring MCP
uhzz
2
2.3k
On-the-fly Suggestions of Rewriting Method Deprecations
ohbarye
1
3.8k
The Evolution of the CRuby Build System
kateinoigakukun
1
740
UMAPをざっくりと理解 / Overview of UMAP
kaityo256
PRO
1
740
Enterprise Web App. Development (1): Build Tool Training Ver. 5
knakagawa
1
120
エンジニア向けCursor勉強会 @ SmartHR
yukisnow1823
2
9.5k
Qiita Bash
mercury_dev0517
2
210
The Implementations of Advanced LR Parser Algorithm
junk0612
1
870
Featured
See All Featured
Gamification - CAS2011
davidbonilla
81
5.2k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Faster Mobile Websites
deanohume
306
31k
For a Future-Friendly Web
brad_frost
177
9.7k
Documentation Writing (for coders)
carmenintech
69
4.7k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.4k
A designer walks into a library…
pauljervisheath
205
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
Transcript
ΫοΫύουʹ͓͚Δ+FOLJOTͷ׆༻
None
݄ؒར༻ऀͷ ສਓҎ্ ϨγϐສҎ্
3VCZ 3VCZPO3BJMT "NB[PO8FC4FSWJDFT
݁ɿ;ͭ͏ʹ͍ͯ͠Δ
ΫοΫύουͰ +FOLJOTΛ͍ͬͯ·ͤΜ ͓ͼ
͓Ή͖Μ͢
DJTMBWFEPDLFS DJTMBWFSVCZ OPEFT DJTMBWFBOESPJE DJTMBWFJPT DJNBTUFS SSSTQFDNBTUFS SSSTQFDXPSLFS "84 0OQSFNJTFT
ϚελɾεϨʔϒߏ w αʔόߏཧ1VQQFUʗ*UBNBF w ϓϥοτϑΥʔϜɾϛυϧΣΞ w ΫϥυͱΦϯϓϨϛεڥ w ϥϕϧͰϊʔυΛཧ
DJTMBWFSVCZ w "84্Ͱϊʔυ͕Քಈ w ؒϊʔυʹॖୀӡస w SCFOWͰ3VCZόʔδϣϯཧ ϥϕϧͰϥΠϒϥϦΛղܾ
STQFD describe SymbolStack do ... context 'when stack is empty'
do subject(:empty_stack) { SymbolStack.new } describe '#size' do it { expect(empty_stack.size).to eq 0 } end
DBQZCBSBXFCLJU feature 'User login' do scenario 'successful login' do visit
login_path fill_in 'Login', with: '
[email protected]
' fill_in 'Password', with: 'password' click_link 'Submit' expect(current_path).to root_path end
DJTMBWFEPDLFS w %PDLFS&OHJOF༻$*ڥ w ϏϧυɾςετɾϨδετϦొ
DJTMBWF\BOESPJE JPT^ w ΦϑΟεͷαʔόϧʔϜʹઃஔ w "OESPJE࣮ػͰςετ w 9DPEFͷόʔδϣϯཧͰྀۤ
DJTMBWFEPDLFS DJTMBWFSVCZ OPEFT DJTMBWFBOESPJE DJTMBWFJPT DJNBTUFS SSSTQFDNBTUFS SSSTQFDXPSLFS "84 0OQSFNJTFT
ͳͥɺ$*Λ͍ͯ͠Δͷ͔ʁ
ʮຖͷྉཧΛָ͠Έʹʯ
ߏங͢Δ ܭଌ͢Δ ֶͿ σʔλ ΞΠσΞ
ҙਤ͠ͳ͍มߋΛ༧Ͱ͖Δ ࠶ݱՄೳͰࣗಈԽ͞Ε͍ͯΔ ϦιʔεใΛूͰ͖Δ ʹ$*ͰकΔ͖Ձ
ҙਤ͠ͳ͍มߋΛ༧Ͱ͖Δ ɾλʔϯΞϥϯυΛ͔͘͢Δ ɾ͙͢ʹࣦഊΛ͑Δ ɾෆ۩߹Λ์ஔͤ͞ͳ͍
։ൃऀेʹၗຫͳͷͰɺ ͰΠϥΠϥ͠ɺͰΩϨΔɻ
w ϚϧνϓϩηεԽʢQBSBMMFM@UFTUTʣ w ࢄԽ w ୈ̍ੈSFNPUF@TQFD w ୈ̎ੈSFNPUF@TQFD w SSSTQFD
None
None
εϙοτΠϯελϯεΛར༻ ϓϩηεఀࢭ͔Βͷࣗಈ෮ؼ ࣦഊͨ͠ςετͷࣗಈ࠶࣮ߦ ςετ࣮ߦॱংͷ࠷దԽ ͔͔࣌ؒΔςετͷػత࣮ߦ
Φʔϓϯιʔε
None
ҙਤ͠ͳ͍มߋΛ༧Ͱ͖Δ ɾλʔϯΞϥϯυΛ͔͘͢Δ ɾ͙͢ʹࣦഊΛ͑Δ ɾෆ۩߹Λ์ஔͤ͞ͳ͍
3334QFD$*'BJMFEFYBNQMFTPGDPPLQBE@SSSTQFD SSSTQFDUBTLTFUCCGECGD STQFDTQFDDPOUSPMMFSTNZ@DPOUSPMMFS@TQFDSC EC "MJDF$PPQFS NPOUITBHP STQFDTQFDDPOUSPMMFSTNZ@DPOUSPMMFS@TQFDSC
DDBD #PC.BSMFZ NPOUITBHP STQFDTQFDDPOUSPMMFSTNZ@DPOUSPMMFS@TQFDSC DBGC $IBSMJF1BSLFS NPOUITBHP +FOLJOTDPPLQBE@SSSTQFD'"*-63&BGUFSҎ্ 0QFO +FOLJOT$IBOHFECZ!EBWF!FWF KFOLJOTIJQDIBUQVCMJTIFS SSSTQFD
None
KFOLJOTIJQDIBUQVCMJTIFS w )JQ$IBU1MVHJOͱͷҧ͍ w +FOLJOTSC w ࣦഊ࣌ʹϝϯγϣϯ͢Δػೳ w ޭϏϧυΛ௨͠ͳ͍ػೳ
ҙਤ͠ͳ͍มߋΛ༧Ͱ͖Δ ɾλʔϯΞϥϯυΛ͔͘͢Δ ɾ͙͢ʹࣦഊΛ͑Δ ɾෆ۩߹Λ์ஔͤ͞ͳ͍
։ൃऀจԽͱن ɾίʔυͷڞಉॴ༗ʢPXOFSTIJQʣ ɾِཅੑɺׂΕ૭ཧ ɾܧଓతσϦόϦʔʢޙड़ʣ
l$PMMFDUJWF0XOFSTIJQFODPVSBHFTFWFSZPOFUP DPOUSJCVUFOFXJEFBTUPBMMTFHNFOUTPGUIF QSPKFDU"OZEFWFMPQFSDBODIBOHFBOZMJOFPG DPEFUPBEEGVODUJPOBMJUZ pYCVHT JNQSPWF EFTJHOTPSSFGBDUPS/PPOFQFSTPOCFDPNFTB CPUUMFOFDLGPSDIBOHFTl IUUQXXXFYUSFNFQSPHSBNNJOHPSHSVMFTDPMMFDUJWFIUNM
ِཅੑΛආ͚Δ ɾ࣌ؒʹґଘ͢Δͷ ɾΈ߹Θͤʹґଘ͢Δͷ ɾੑೳʹґଘ͢Δͷ
ِཅੑ͕͋Δͱʜʜ ɾΤϥʔΛؾʹ͠ͳ͘ͳͬͯ͠·͏ ɾຊͷΤϥʔΛݟಀͯ͠͠·͏ ˠϞϥϧԼɺڟѱ൜ࡑͷଟൃ
None
w ࠷ޙʹޭͨ͠ϏϧυΛ܁Γฦ͠ ࣮ߦͯ͠ΈΔ w ཌ݄ॳʹγεςϜ࣌ؒΛઃఆͯ͠ ࣮ߦͯ͠ΈΔ w ࣦഊͨ͠ςετΛ࠶࣮ߦͯ͠ΈΔ
ҙਤ͠ͳ͍มߋΛ༧Ͱ͖Δ ࠶ݱՄೳͰࣗಈԽ͞Ε͍ͯΔ ϦιʔεใΛूͰ͖Δ ʹ$*ͰकΔ͖Ձ
ʮͳͥ$*Λಋೖ͍ͯ͠ͳ͍ͷͰ͔͢ʁʯ ʮฐࣾͷΤϯδχΞҙ͕ࣝߴ͍ͨΊɺϩʔΧϧ ڥͰςετΛ࣮ߦͤͣʹɺϦϙδτϦʹιʔε ίʔυΛίϛοτ͠·ͤΜʢΩϦοʯ
ʮܧଓతσϦόϦʔιϑτΣΞ։ൃʹ͓͚Δ نͷͻͱͭͩɻʜʜܧଓతσϦόϦʔΛ࣮ݱ͢ Δʹɺ։ൃνʔϜ͕ιϑτΣΞΛܧଓతʹ౷ ߹͠ɺ࣮ߦϑΝΠϧΛϏϧυ͠ɺ͞ΒʹͦΕΛ ࣗಈతʹςετͯ͠Λݕग़͢Ε͍͍ɻʯ IUUQDBQTDUSMRVFKQLENTOSXJLJCMJLJ $POUJOVPVT%FMJWFSZ
ՌϦϙδτϦ όʔδϣϯίϯτϩʔϧ ιʔείʔυ ઃఆ ίϛοτεςʔδ ड͚ೖΕεςʔδ ड͚ೖΕςετ ڥઃఆɺσϓϩΠɺ εϞʔΫςετ ੑೳςετ
ڥઃఆɺσϓϩΠɺ εϞʔΫςετ ຊ൪ڥ ڥઃఆɺσϓϩΠɺ εϞʔΫςετ ίϯύΠϧ ίϛοτςετ Ռ࡞ ίʔυղੳ ڥઃఆ σϓϩΠ εϞʔΫςετ ड͚ೖΕςετ ઃఆ +F[)VNCMFɺ%BWJE'BSMFZʰܧଓతσϦόϦʔʱ
ʮτϤλੜ࢈ํࣜͰΘΕΔʰࣗಈԽʱɺχϯ ϕϯͷ͘ʰࣗಇԽʱͰ͢ɻʜʜʰࣗಇʱͱɺ ػցʹળ͠ѱ͠Λஅͤ͞ΔஔΛϏϧτΠϯ͠ ͨػցͰ͋Γɺʜʜʰҟৗ͕͋Εػց͕ࢭ·Δʱ ͜ͱͰɺෆྑੜ࢈͞ΕͣɺͻͱΓͰԿͷ ػցΛӡసͰ͖ΔͷͰɺੜ࢈ੑΛඈ༂తʹ্͞ ͤΔ͜ͱ͕Ͱ͖·ͨ͠ɻʯ IUUQXXXUPZPUBDPKQKQODPNQBOZWJTJPOQSPEVDUJPO@TZTUFNKJEPLBIUNM
$*ͰͷࣗಈԽ ɾςετͷࣗಈԽ ɾΞηοτͷੜͱཧͷࣗಈԽ ɾσϓϩΠͷࣗಈԽ ɾ௨ɾهͷࣗಈԽ
HJUIVC DJNBTUFS SSSTQFDNBTUFS SSSTQFDXPSLFS OPEFT HSPXUIGPSFDBTU NBNJZB BQQ
OPEFT IJQDIBU BQQTUBHJOH
None
ҙਤ͠ͳ͍มߋΛ༧Ͱ͖Δ ࠶ݱՄೳͰࣗಈԽ͞Ε͍ͯΔ ϦιʔεใΛूͰ͖Δ ʹ$*ͰकΔ͖Ձ
ϦιʔεใΛूͰ͖Δ ɾΞηοτͷੜͱཧ ɾ੩తղੳʢΧόϨοδɾηΩϡϦςΟʣ ɾهͱՄࢹԽ
DJNBTUFS SSSTQFDNBTUFS NBNJZB BQQTUBHJOH ΞηοτͷίϯύΠϧʢඞཁ࣌ʣ HJUIVC SSSTQFDͷ࣮ߦ มߋͷऔಘ Ξηοτอଘ Ξηοτ৴
None
$*ͷՁΛकΔߦಈ ɾҙਤ͠ͳ͍มߋΛ༧͢Δ ɾ࠶ݱՄೳͳΑ͏ʹࣗಈԽ͢Δ ɾϦιʔεใΛू͢Δ
;ͭ͏ʹ͍ͯ͠Δ ʹΔ͖͜ͱΛΔ ʹৗʹͦ͏͋ΔΑ͏ʹ͢Δ