jenkinsによるciの導入
DESCRIPTION
TRANSCRIPT
JenkinsによるCI (継続的インテグレーション)の
導入
1
自己紹介•id: ikikko•所属•株式会社 ヌーラボ•日本Jenkinsユーザ会
2
アジェンダ•CI / Jenkinsの概要•基本的な使い方•一歩進んだ使い方•まとめ
http://www.flickr.com/photos/darrentunnicliff/3371355414/
ところで、CIとかJenkins / Hudsonとかって
ご存知ですか?
CIとはIn software engineering, continuous integration (CI) implements continuous processes of applying quality control — small pieces of effort, applied frequently. Continuous integration aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality controlafter completing all development.
ref : http://en.wikipedia.org/wiki/Continuous_integration
5
要は頻繁に(継続的に)ビルドしましょうということ
概念図 - 全体
6
1. リポジトリにコミット / アップデート2. リポジトリからソースコードを取得してビルド3. ビルド結果をブラウザ上で確認
概念図 - ビルド
7
何が嬉しいのか?不具合の早期検知•他モジュールへの影響•「私のマシンでは動きます」問題
8
コーディング 結合テスト 運用テスト 本番稼働
不具合の発見タイミングと修正に要する時間
前からあったよね?•結構手間がかかった•インストール•設定•結果の確認
9
http://www.flickr.com/photos/tambako/3753870273/
JenkinsCIツールの一種
•直感的で使いやすい•拡張性が高い
10
ちょっと小話•昔はHudsonという名前だった•Hudsonからフォークして、Jenkinsに変わった
11
アジェンダ•CI / Jenkinsの概要•基本的な使い方•一歩進んだ使い方•まとめ
http://www.flickr.com/photos/darrentunnicliff/3371355414/
http://www.flickr.com/photos/dunechaser/2936382027/
Demoはじめの一歩
CIツールに求められるもの•ビルドが実行できること•様々なタイプのビルド•ビルドタイミングの柔軟な変更•ビルド結果を確認できること•ビルド時のログを後から参照•異常時には通知
14
アジェンダ•CI / Jenkinsの概要•基本的な使い方•一歩進んだ使い方•まとめ
http://www.flickr.com/photos/darrentunnicliff/3371355414/
Jenkinsを外部から操作
•スクリプトコンソール•Jenkins CLI•Remote Access API
16
スクリプトコンソール•Web上でスクリプトを実行
17
http://www.flickr.com/photos/dunechaser/2936381889/
Demo
メール通知宛先 一括変更
シチュエーション•多数のジョブが設定済み•プロジェクトに新しい人が入ってきたので、メール通知宛先に追加したい
19
どうやる?•Web上で1つずつ変更
•単調作業…
http://www.flickr.com/photos/horri/447032138/
// 全ジョブをループ処理hudson.model.Hudson.instance.items.each { println "Job : ${it.name}"
// 各ジョブにメール通知の宛先を追加 def mailer = it.publishersList.get(hudson.tasks.Mailer.class) mailer?.recipients += ' [email protected]'}
スクリプトコンソール•スクリプトで一括追加
Jenkins CLI
22
スクリプトやシェルからアクセスできるクライアント
Jenkins CLI1. jenkins-cli.jarをダウンロード2. 以下のコマンドを実行java -jar jenkins-cli.jar -s <url> <command>
(command : create-job, build, help)
23
Remote Access APIプログラムからアクセスできる、REST形式のAPI
•ジョブ作成• http://localhost:8080/jenkins/createItem•ジョブ実行• http://localhost:8080/jenkins/job/{name}/build
Remote Access APIオンラインドキュメントhttp://localhost:8080/jenkins/api/
http://www.flickr.com/photos/dunechaser/2937237084/
Demo
プログラムからJob作成
応用例 : IDE連携
27
Jenkinsを外部から操作
•スクリプトコンソール•Jenkins CLI•Remote Access API
28
使い捨てのスクリプト
汎用的なプログラム
アジェンダ•CI / Jenkinsの概要•基本的な使い方•一歩進んだ使い方•まとめ
http://www.flickr.com/photos/darrentunnicliff/3371355414/
まとめ
30
•使ったことがなくても導入しやすい
他の構成をいじる必要無い
設定を移行しやすい
まとめ•使いこなそうと思ったときにいろいろできる
31
Jenkinsユーザ会(ビルド職人の集い)
•Webサイト http://build-shokunin.org/
•メーリングリストhttp://groups.google.com/group/jenkinsci-ja
•勉強会(2011/05/20 19:00~)32
http://www.flickr.com/photos/kwl/5127099146/