jenkinsによるciの導入

32
Jenkinsによる CI (継続的インテグレーション)の 導入 1

Upload: ikikko-nakamura

Post on 15-Jan-2015

1.277 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: JenkinsによるCIの導入

JenkinsによるCI (継続的インテグレーション)の

導入

1

Page 2: JenkinsによるCIの導入

自己紹介•id: ikikko•所属•株式会社 ヌーラボ•日本Jenkinsユーザ会

2

Page 3: JenkinsによるCIの導入

アジェンダ•CI / Jenkinsの概要•基本的な使い方•一歩進んだ使い方•まとめ

http://www.flickr.com/photos/darrentunnicliff/3371355414/

Page 4: JenkinsによるCIの導入

ところで、CIとかJenkins / Hudsonとかって

ご存知ですか?

Page 5: JenkinsによるCIの導入

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

要は頻繁に(継続的に)ビルドしましょうということ

Page 6: JenkinsによるCIの導入

概念図 - 全体

6

1. リポジトリにコミット / アップデート2. リポジトリからソースコードを取得してビルド3. ビルド結果をブラウザ上で確認

Page 7: JenkinsによるCIの導入

概念図 - ビルド

7

Page 8: JenkinsによるCIの導入

何が嬉しいのか?不具合の早期検知•他モジュールへの影響•「私のマシンでは動きます」問題

8

コーディング 結合テスト 運用テスト 本番稼働

不具合の発見タイミングと修正に要する時間

Page 9: JenkinsによるCIの導入

前からあったよね?•結構手間がかかった•インストール•設定•結果の確認

9

http://www.flickr.com/photos/tambako/3753870273/

Page 10: JenkinsによるCIの導入

JenkinsCIツールの一種

•直感的で使いやすい•拡張性が高い

10

Page 11: JenkinsによるCIの導入

ちょっと小話•昔はHudsonという名前だった•Hudsonからフォークして、Jenkinsに変わった

11

Page 12: JenkinsによるCIの導入

アジェンダ•CI / Jenkinsの概要•基本的な使い方•一歩進んだ使い方•まとめ

http://www.flickr.com/photos/darrentunnicliff/3371355414/

Page 14: JenkinsによるCIの導入

CIツールに求められるもの•ビルドが実行できること•様々なタイプのビルド•ビルドタイミングの柔軟な変更•ビルド結果を確認できること•ビルド時のログを後から参照•異常時には通知

14

Page 15: JenkinsによるCIの導入

アジェンダ•CI / Jenkinsの概要•基本的な使い方•一歩進んだ使い方•まとめ

http://www.flickr.com/photos/darrentunnicliff/3371355414/

Page 16: JenkinsによるCIの導入

Jenkinsを外部から操作

•スクリプトコンソール•Jenkins CLI•Remote Access API

16

Page 17: JenkinsによるCIの導入

スクリプトコンソール•Web上でスクリプトを実行

17

Page 19: JenkinsによるCIの導入

シチュエーション•多数のジョブが設定済み•プロジェクトに新しい人が入ってきたので、メール通知宛先に追加したい

19

Page 20: JenkinsによるCIの導入

どうやる?•Web上で1つずつ変更

•単調作業…

http://www.flickr.com/photos/horri/447032138/

Page 21: JenkinsによるCIの導入

// 全ジョブをループ処理hudson.model.Hudson.instance.items.each { println "Job : ${it.name}"

// 各ジョブにメール通知の宛先を追加 def mailer = it.publishersList.get(hudson.tasks.Mailer.class) mailer?.recipients += ' [email protected]'}

スクリプトコンソール•スクリプトで一括追加

Page 22: JenkinsによるCIの導入

Jenkins CLI

22

スクリプトやシェルからアクセスできるクライアント

Page 23: JenkinsによるCIの導入

Jenkins CLI1. jenkins-cli.jarをダウンロード2. 以下のコマンドを実行java -jar jenkins-cli.jar -s <url> <command>

(command : create-job, build, help)

23

Page 24: JenkinsによるCIの導入

Remote Access APIプログラムからアクセスできる、REST形式のAPI

•ジョブ作成• http://localhost:8080/jenkins/createItem•ジョブ実行• http://localhost:8080/jenkins/job/{name}/build

Page 25: JenkinsによるCIの導入

Remote Access APIオンラインドキュメントhttp://localhost:8080/jenkins/api/

Page 27: JenkinsによるCIの導入

応用例 : IDE連携

27

Page 28: JenkinsによるCIの導入

Jenkinsを外部から操作

•スクリプトコンソール•Jenkins CLI•Remote Access API

28

使い捨てのスクリプト

汎用的なプログラム

Page 29: JenkinsによるCIの導入

アジェンダ•CI / Jenkinsの概要•基本的な使い方•一歩進んだ使い方•まとめ

http://www.flickr.com/photos/darrentunnicliff/3371355414/

Page 30: JenkinsによるCIの導入

まとめ

30

•使ったことがなくても導入しやすい

他の構成をいじる必要無い

設定を移行しやすい

Page 31: JenkinsによるCIの導入

まとめ•使いこなそうと思ったときにいろいろできる

31

Page 32: JenkinsによるCIの導入

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/