Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
650
Porting Docker to FreeBSD
kazuyoshi
10
13k
Planet Tempura
kazuyoshi
0
270
Other Decks in Programming
See All in Programming
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
350
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
8.2k
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
350
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
110
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
310
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
350
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
120
The Rails Doctrine Decade
koic
2
320
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
440
FreeBSDでZabbixを動かす
kenkino
0
320
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
190
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Balancing Empowerment & Direction
lara
6
1.3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
530
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
Bash Introduction
62gerente
615
220k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
530
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.9k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Designing for Performance
lara
611
70k
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!