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
610
Porting Docker to FreeBSD
kazuyoshi
10
13k
Planet Tempura
kazuyoshi
0
260
Other Decks in Programming
See All in Programming
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
300
3Dシーンの圧縮
fadis
1
650
Oxcを導入して開発体験が向上した話
yug1224
4
290
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.5k
権限チェックの一貫性を型で守る TypeScript による多層防御
mnch
4
1.1k
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
140
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
4.1k
SPMマルチモジュールで テストカバレッジを取得する技法
yosshi4486
0
140
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.1k
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
590
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
250
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
A designer walks into a library…
pauljervisheath
211
24k
Evolving SEO for Evolving Search Engines
ryanjones
0
210
Making Projects Easy
brettharned
120
6.7k
Visualization
eitanlees
152
17k
Automating Front-end Workflow
addyosmani
1370
210k
The Spectacular Lies of Maps
axbom
PRO
1
790
Side Projects
sachag
455
43k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
From π to Pie charts
rasagy
0
200
How to train your dragon (web standard)
notwaldorf
97
6.7k
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!