Effective jenkins (1)

Post on 28-Jul-2015

252 views 0 download

Transcript of Effective jenkins (1)

Effective Jenkins

Keynote● Do You Remember Mr. Jenkins ?

● Memory with Jenkins

● Jenkins Meets Chef

Do You Remember Mr. Jenkins?

コンパイル テスト

インスペクション デプロイ

What's 継続的インテグレーション?

Jenkins導入のモチベーション

● 自動化による生産性向上

● 作業の属人性排除

● "精神論"による品質管理から"仕組み"による品

質管理へ

一般的なJenkinsの活用方法

commitpull request

unit test merge

Curennt Develop

次第にモチベーションも上がる

上がる⤴

でも、これは初歩の初歩

Jenkinsさんはcronとしても優秀

● ボタンをクリックして待つだけ

● 実行結果を簡単に確認できる

● ジョブにコメントや説明を記述できる

● タイマーでタスク実行

● プラグインと組み合わせると、タスクを連携する

ことができる

● 外部のコマンド、サービスを呼び出せる

● 本番環境へのリリースがとても大変

とあるプロジェクトにおける課題

リリース手順が多くて大変

● すべて手動・・・tomcat6の設定

# vi /etc/tomcat6/tomcat6.confJAVA_HOME位置の変更

JAVA_HOME="/usr/lib/jvm/jre-1.7.0"実行ユーザの変更

TOMCAT_USER="root"

使用ポートの変更

# vi /usr/share/tomcat6/conf/server.xml <Connector port="80" protocol="HTTP/1.1"

リリースに丸2日かかった・・・

そもそも手動リリースは危険

自動化しよう!

How May I Help You?

リリース作業をJenkinsで自動化

結果、0.5日に短縮 !!

Immutable Infrastructure

Jenkins Meets Chef

What’s Chef ?

What’s cookbook ?include_recipe 'database::mysql'

mysql_connection_info = {:host => "localhost",

:username => 'root',

:password => node['mysql']

['server_root_password']}

mysql_database "my_app" do

connection mysql_connection_info

action :create

end

Infrastructure as Code

● コードによるインフラの管理

● 台数が増えても構築に時間がかからない

● コード=手順書となるのでコードをメンテナンス

すれば良い

● ヒューマンエラー因子の除去

● 再利用性

Immutable Infrastructure

● 仮想化

● クラウド

● Infrastructure as Code○ サーバをプラグラマブルに管理

● Immutable Infrastructure○ サーバ管理の冪等性

○ サーバ管理の自動化

インフラの継続的インテグレーション

Circle of Jenkins

Effective Jenkins

● エンジニアへの要求が変化している

● 自動化できる作業は計算機に委任する

● 人間は知的作業へシフト

Thank You

Good Jenkins !!Good Continuous Integration !!

Appendix1

Appendix2

● DB(MySQl)のマイグレーション○ gradle経由でFlywayを実行

● Tomcatへのデプロイ○ SSHplugin経由でTomcatManagerを実行

● ジョブの階層化と並列化○ Parameterized Trigger Pluginを利用して階層化○ Build Pipeline Pluginを利用して並列化