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
620
Porting Docker to FreeBSD
kazuyoshi
10
13k
Planet Tempura
kazuyoshi
0
270
Other Decks in Programming
See All in Programming
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
110
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
110
symfony/aiとlaravel/boost
77web
0
120
1B+ /day規模のログを管理する技術
broadleaf
0
130
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
160
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
360
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
140
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
110
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
220
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
530
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
107
250k
Paper Plane
katiecoart
PRO
2
52k
Paper Plane (Part 1)
katiecoart
PRO
0
9.6k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
260
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Google's AI Overviews - The New Search
badams
0
1.1k
Discover your Explorer Soul
emna__ayadi
2
1.2k
A better future with KSS
kneath
240
18k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Agile that works and the tools we love
rasmusluckow
331
22k
Are puppies a ranking factor?
jonoalderson
1
3.7k
A Soul's Torment
seathinner
6
3.1k
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!