Effective jenkins (1)

29
Effective Jenkins

Transcript of Effective jenkins (1)

Page 1: Effective jenkins (1)

Effective Jenkins

Page 2: Effective jenkins (1)

Keynote● Do You Remember Mr. Jenkins ?

● Memory with Jenkins

● Jenkins Meets Chef

Page 3: Effective jenkins (1)

Do You Remember Mr. Jenkins?

Page 4: Effective jenkins (1)

コンパイル テスト

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

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

Page 5: Effective jenkins (1)

Jenkins導入のモチベーション

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

● 作業の属人性排除

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

質管理へ

Page 6: Effective jenkins (1)

一般的なJenkinsの活用方法

commitpull request

unit test merge

Curennt Develop

Page 7: Effective jenkins (1)

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

Page 8: Effective jenkins (1)

上がる⤴

Page 9: Effective jenkins (1)

でも、これは初歩の初歩

Page 10: Effective jenkins (1)

Jenkinsさんはcronとしても優秀

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

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

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

● タイマーでタスク実行

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

ことができる

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

Page 11: Effective jenkins (1)

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

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

Page 12: Effective jenkins (1)

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

● すべて手動・・・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"

Page 13: Effective jenkins (1)

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

Page 14: Effective jenkins (1)

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

Page 15: Effective jenkins (1)

自動化しよう!

How May I Help You?

Page 16: Effective jenkins (1)

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

Page 17: Effective jenkins (1)

結果、0.5日に短縮 !!

Page 18: Effective jenkins (1)

Immutable Infrastructure

Page 19: Effective jenkins (1)

Jenkins Meets Chef

Page 20: Effective jenkins (1)

What’s Chef ?

Page 21: Effective jenkins (1)

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

Page 22: Effective jenkins (1)

Infrastructure as Code

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

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

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

すれば良い

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

● 再利用性

Page 23: Effective jenkins (1)

Immutable Infrastructure

● 仮想化

● クラウド

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

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

○ サーバ管理の自動化

Page 24: Effective jenkins (1)

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

Page 25: Effective jenkins (1)

Circle of Jenkins

Page 26: Effective jenkins (1)

Effective Jenkins

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

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

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

Page 27: Effective jenkins (1)

Thank You

Good Jenkins !!Good Continuous Integration !!

Page 28: Effective jenkins (1)

Appendix1

Page 29: Effective jenkins (1)

Appendix2

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

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

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