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 at mixi
Search
Kazuyoshi Kato
February 22, 2012
Programming
16k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How we use Jenkins at mixi
Kazuyoshi Kato
February 22, 2012
More Decks by Kazuyoshi Kato
See All by Kazuyoshi Kato
firecracker-containerd and SOCI Snapshotter
kazuyoshi
0
640
Porting Docker to FreeBSD
kazuyoshi
10
13k
Planet Tempura
kazuyoshi
0
270
Other Decks in Programming
See All in Programming
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
260
ALB ログから Trace を気合で繋げる技術
fohte
7
760
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
730
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
3
2.2k
バグを直したら useEffect が消えた
colorful12
3
760
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
160
Flow は今どうなっているか
mizdra
PRO
0
750
リアルな遅延を測る仕様
kota_yata
1
130
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
160
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
400
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
570
Press start. Python's next generation.
willingc
PRO
3
250
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
310
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
360
Faster Mobile Websites
deanohume
310
32k
エンジニアに許された特別な時間の終わり
watany
108
250k
4 Signs Your Business is Dying
shpigford
187
23k
For a Future-Friendly Web
brad_frost
183
10k
Documentation Writing (for coders)
carmenintech
77
5.5k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Code Review Best Practice
trishagee
74
20k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Deep Space Network (abreviated)
tonyrice
0
270
Transcript
How we use Jenkins at mixi Kato Kazuyoshi mixi, Inc.
Kato Kazuyoshi 2012.8-p.info/ You can see my name on Firefox,
jQuery UI, Scala.
</officiallanguage>
We aim to eliminate SIMPLE, REPEATED, BORING jobs.
None
1. iOS Build and Create .plist
2. Android Build and Test Integrated with Gerrit
3. “mixi” Test
We are (still) a Perl shop.
Execute Shell
Test Results •TAP::Harness::JUnit •tap-to-junit-xml
% prove --harness TAP::Harness::JUnit ...
None
Code Metrics •Perl::Metrics::Lite
% measureperl-checkstyle \ ! --max_sub_lines 60 \ ! --max_sub_mccabe_complexity 10
\ ! --directory lib/Mixi \ ! > checkstyle-result.xml
Code Coverage •Devel::Cover::Report::Clover
XML is like a violence – if it doesn’t solve
your problems, you are not using enough of it.
None
Jenkins slave Jenkins master Ikachan Git repos IRC server
00:15-00:30
PROBLEM: SLOW TESTS
Small Medium Large Network access No localhost only Yes Database
No Yes Yes File system access No Yes Yes Use external systems No Discouraged Yes Multiple threads No Yes Yes Sleep statements No Yes Yes System properties No Yes Yes Time limit (seconds) 60 300 900+ googletesting.blogspot.com/2010/12/test-sizes.html
1. “recent” job
lib/Mixi/Foo.pm t/lib/Mixi/Foo.t t/lib/Mixi/Foo/bar.t t/lib/Mixi/Foo/baz.t
ci.example.com/job/trunk-recent/5446/api/json
ci.example.com/job/trunk-recent/5446/api/json $BUILD_URL
{ ... "changeSet" : { "kind" : null, "items" :
[ { "msg" : "...", "comment" : "...", "date" : "2012-02-21 10:07:29 +0000", "id" : "f9b10e71011cb33f90ef6092e72fab4947e3350f", "author" : { ... }, "paths" : [ { "file" : "static/js/mixi/notify/visitor-min.js", "editType" : "edit" }, { "file" : "static/js/mixi/notify/visitor.js", "editType" : "edit" } ] }, { "msg" : "...", "comment" : "...", "date" : "2012-02-21 10:11:06 +0000", "id" : "7289c319218d3f9e3d64b2a3a58333a3735ed2b5", "author" : { ... } "paths" : [ { "file" : "script/change_order_image.pl", "editType" : "edit" } ] } ]
None
2. “try” job
None
% make remote-test script/devel/remote-test View test results in a web
browser: http://ci.example.com/job/git-try/ %
None
None
ci.example.com/job/git-try/ ! buildWithParameters ? ! repos!! =!users%2Falice%2Fmixi & ! branch!
=!new-feature
WE— HTTP
3. The Free Lunch
None
Summary •You can use Jenkins with Perl. •Jenkins has many
“web” APIs.
Flickr is somewhat unique in that it uses a code
repository with no branches; code.flickr.com/blog/2009/12/02/flipping-out/
Feature Toggle martinfowler.com/bliki/FeatureToggle.html (2010)
building the right it before you invest a lot of
time and efforts to build it right. pretotyping.org/
Thanks!