SlideShare a Scribd company logo
1 of 32
Download to read offline
2012/05/29(火) @suzukij
 Jenkinsについて
 デモ
 CI 継続的インテグレーション
 CD 継続的デリバリー
 チームでの運用例
 まとめ
   Jenkinsを現場で使っている人?
    ◦ 自動ユニットテスト
    ◦ 自動ビルド
    ◦ 自動デプロイ

   Jenkinsに関する本読んだ人?
   世界で最も使われている
        継続的インテグレーションツール
         Continuous Integration (CI)

   Javaで書かれたOSSのCIサーバ
    ◦ warファイルで提供される

   導入、設定が簡単
    ◦ ほぼすべての設定をブラウザから操作できる
   Cron(スケジューラ)の強化版
    ◦ 人間が介在せずとも実行できるようなスクリプトを
      自動で繰り返して実行し、結果を収集して表示

   CIの実践をサポートするツール
    ◦ 高い拡張性
    ◦ 豊富なプラグイン(450以上)
①公式サイトからDL
http://jenkins-ci.org/


②起動 以下コマンドのみ
java –jar jenkins.war

③ブラウザからアクセス
http://localhost:8080/
とりあえずシンプルなデモ

①ジョブの作成
②ジョブの実行
③ジョブ結果の通知
なんとなく分かったところで
JavaソースからJar(war)ファイルを作成するところまでをデモ


①SVNリポジトリからソースを取得
②ユニットテスト
③ビルド(Maven)
④静的コード解析
   FindBugs, PMD/CPD, CheckStyle,
   Javadoc, emma
なんとなくイメージは掴めたでしょうか?

 Jenkinsでどんなことができるのか
 Jenkinsを実際のプロジェクトでどう使うのか
   もともとはXPの一部の「結合テストを頻繁に
    実施する」という作法

   ビルド、テスト、コードの品質検査など、定型的
    で反復可能な作業を自動化し、繰り返しこまめ
    に実行することで省力化を図ること

   自動化による省力化によって開発者が設計をし
    たりプログラムを書いたりというより創造的な作
    業に集中できるようにする全般のこと
繰り返し実行
実行を自動化
 ⇒省力化を図る
 すばやいフィードバック

◦ コミットのたびにテストやコードの品質検査をする
   問題を早期発見できる
     小さな修正を素早くおこなうことができる

⇒問題の発見、対応を先送りしない
⇒リリース直前まで
    問題が溜め込まれるのを防ぐ
 見える化 気付ける化
  ◦ ユニットテストやビルドの結果を時系列に表示
  ◦ コード検査/カバレッジ取得の結果をグラフで表示
    ⇒プロジェクトの健康状態を把握

◦ ビルド手順、テスト手順をスクリプトとして集約
  ⇒Jenkinsで動くもののみが管理される
  ⇒長ったらしい手順書が陳腐化することもない
  ⇒属人化を防ぐ
 以上、CIの簡単な説明です。


 CIについての質問
アジャイルマニフェストの条文
「我々がもっとも価値を置くのは、価値のあるソフトウェ
 アを早いうちから継続的にデリバリーすることを通じて
 顧客を満足させることである」

なんだか難しそうだけど まず
CIを通じて出来上がったモジュールをテスト環境、本
 番環境へ自動でリリースできるようにし、反復可能
 なプロセスを構築する
いつでも、素早く、繰り返し可能なリリース
デプロイボタンを1度クリックするだけでテスト済み/
 コード検証済みのモジュールが完全な状態でテスト
 環境や本番環境へリリースすることができる。
数秒で完了させることができる。

望むバージョンを好きな環境へ
自分の望むバージョンのアプリケーションを好きな環
 境に自分でリリースできる。
問題が発生してもすぐにリリース前に状態に戻せるよ
 うにする。
リリースする権限はPJに関わるメンバに
開発者だけでなくチームに関わるメンバにリ
 リースする権限を持たせる
(テスター、サポート担当者、運用担当者など)
   チーム間の作業を効率化
    ◦ 各チームメンバが自身でビルドできるようになるこ
      とで正しいビルドが渡されるのを待つ必要がなくな
      る (無駄なメールのやりとり、申請が不要に)
    ◦ リリースがボタンひとつで実行できる 例えば…
     テスター:アプリの旧バージョンと新バージョンの変更を
      検証することができる とか
     サポート担当者:アプリをテスト環境にデプロイし、欠陥
      を再現することができる とか
     運用担当者:ディザスタリカバリの演習の一環としてビル
      ドを本番環境へデプロイできる など
   リリースの負担を減らす
    ◦ 小さく、早いサイクルでリリースができるようになる
    ◦ 手順書に従ってビクビクしながら手動でリリースす
      る必要がなくなる
    ◦ リリース後に問題があった場合でも容易に前の状
      態に戻すことができる

   素早いフィードバック
    ◦ CIと同様のメリット
 以上、CDの簡単な説明です。


 CDについての質問
 実行までを自動化
        (主にビルド、デプロイ)
◦ 簡単に実行できるようにする
◦ 何度も繰り返せるようにする
◦ 手順やルールをJenkinsに寄せる
  属人化を防ぐ
    ○○さんしか知らない作業
    更新されていない手順書
   ↑×ダメ絶対
 素早くこまめに
◦ 統合の間隔は短く、小さく
◦ 問題の早期発見、早期対応

◦ 統合に関連するリスクを減らす
ビルド、デプロイ作業のよう
 な単純で面倒で面白くない
タンポポワークは
Jenkinsさんに任せてしまえ
結果だけを教えてもらおう
以上、駆け足でJenkinsとCI、CDについて簡
単に説明させてもらいました。

CI、特にCDはプロジェクトチーム全体に関
わることなので現実にはなかなか難しいと
思います。
ですが日頃から各プロセスについて改善を
続けていけば少しずつ導入できると思って
います。
(CI、CDは少しずつ一歩一歩が重要)
初めての自動化には大きな痛みが伴い
ますが受ける恩恵は計り知れないくらい
大きいです。

2年以上CIを実践しているものの、いま
だにイケていないところがたくさんあるの
ですが導入する価値は大いにあると
思っています。
みなさんもJenkinsを使ってCI、CDに取り
組んでみてはいかがでしょうか?

Jenkinsを使った作業の自動化はすぐに
個人でも始めることができます。
まずはローカルで動かしてみません
か?
以上、ご静聴ありがとうございました。
■日程
 2012/07/29(日) 11:30 – 17:30
■場所
 法政大学 市ヶ谷キャンパス

http://connpass.com/event/467/
おすすめの書籍

   Jenkins実践入門 ビルド・テスト・デプロイを自動化する技術
   Jenkins(カエル本)
   継続的デリバリー
   ビルド
    ◦ Ant (ActionScriptをビルド→swf)
    ◦ Maven(Javaビルド→war、ユニットテスト、JavaDoc生成)

   コードの品質検査
    ◦   PMD/CPD(コードの重複、コピペ、DRY原則のチェック)
    ◦   FindBugs(潜在バグのチェック)
    ◦   CheckStyle(コーディングルールのチェック)
    ◦   タスクのチェック(ソースの ”TODO” や ”FIXME” を検出)

   テスト
    ◦ JUnit(ユニットテストの実行)
    ◦ Cobertura(テストカバレッジの取得)
   DB環境構築(Oracle10, 11, Postgres8, 9, SQLServer2005, 2008)
    ◦ テスト環境DBのテーブルをドロップ、作成、マスタ登録、テストデータ登録

   デプロイ(Tomcat6, 7, WebSphere8)
    ◦ Deploy(APサーバへのデプロイ、アプリ再起動)

   テスト環境に対してAPIのテスト(AP, DBの上記組み合わせ)
    ◦ AP 6 * DB 3 = 18パターン
    ◦ JUnitを実行し、テスト環境に対してHTTPリクエスト、期待するレスポンスの
      XMLが返ってくるか検証

   通知
    ◦ メール通知(各ジョブが失敗した時のみ結果を通知)
    ◦ IRCプラグイン(各ジョブが完了した時に結果を通知)
   その他 ツール系
    ◦ テスト環境のヘルスチェック(スケジュールで5分おき)
    ◦ バックアップ(スケジュールで毎日)
    ◦ ER図をもとにDB定義書.xls、DB定義.htmlを生成(ワンクリック)

More Related Content

What's hot

劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜aha_oretama
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Masahito Zembutsu
 
CI/CDツール比較してみた
CI/CDツール比較してみたCI/CDツール比較してみた
CI/CDツール比較してみたShoya Kai
 
Iocコンテナについて
IocコンテナについてIocコンテナについて
IocコンテナについてAkio Terayama
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化DeNA
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようShohei Okada
 
View Customize Pluginで出来ること
View Customize Pluginで出来ることView Customize Pluginで出来ること
View Customize Pluginで出来ることonozaty
 
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化Satoshi Akama
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろうakira6592
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すTakaya Saeki
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンKentaro Yoshida
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理Takafumi Yoshida
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションMasanori Satoh
 
Multibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことMultibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことRecruit Lifestyle Co., Ltd.
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Shin Ohno
 

What's hot (20)

劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
jenkinsで遊ぶ
jenkinsで遊ぶjenkinsで遊ぶ
jenkinsで遊ぶ
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
CI/CDツール比較してみた
CI/CDツール比較してみたCI/CDツール比較してみた
CI/CDツール比較してみた
 
Iocコンテナについて
IocコンテナについてIocコンテナについて
Iocコンテナについて
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
 
View Customize Pluginで出来ること
View Customize Pluginで出来ることView Customize Pluginで出来ること
View Customize Pluginで出来ること
 
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーション
 
Multibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことMultibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだこと
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
 

Similar to jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー

CIのもたらす世界
CIのもたらす世界CIのもたらす世界
CIのもたらす世界Tatsuhito Kato
 
Jenkins実践入門目次チラ見せしちゃいます
Jenkins実践入門目次チラ見せしちゃいますJenkins実践入門目次チラ見せしちゃいます
Jenkins実践入門目次チラ見せしちゃいますMasanori Satoh
 
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1Yusuke HIDESHIMA
 
CI(継続的インテグレーション)
CI(継続的インテグレーション)CI(継続的インテグレーション)
CI(継続的インテグレーション)HIRA
 
Net なプロジェクトでも jenkins を使ってみた
Net なプロジェクトでも jenkins を使ってみたNet なプロジェクトでも jenkins を使ってみた
Net なプロジェクトでも jenkins を使ってみたOda Shinsuke
 
「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリー「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリーNorikazu Hiraki
 
AWS Black Belt Online Seminar AWS上のJenkins活用方法
AWS Black Belt Online Seminar AWS上のJenkins活用方法AWS Black Belt Online Seminar AWS上のJenkins活用方法
AWS Black Belt Online Seminar AWS上のJenkins活用方法Amazon Web Services Japan
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜Daiki Kawanuma
 
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdateYuki Iwanari
 
Jenkinsの導入 Vol.01
Jenkinsの導入 Vol.01Jenkinsの導入 Vol.01
Jenkinsの導入 Vol.01regret raym
 
[LT] Continuous Delivery
[LT] Continuous Delivery [LT] Continuous Delivery
[LT] Continuous Delivery Joongjin Bae
 
はじめての CircleCI
はじめての CircleCIはじめての CircleCI
はじめての CircleCIYosuke Mizutani
 
もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順Hide Koba
 
TFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょTFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょTakuya Kawabe
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployRyutaro YOSHIBA
 
vSphere 4の気になる機能を試してみた
vSphere 4の気になる機能を試してみたvSphere 4の気になる機能を試してみた
vSphere 4の気になる機能を試してみたVirtualTech Japan Inc.
 

Similar to jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー (20)

CIのもたらす世界
CIのもたらす世界CIのもたらす世界
CIのもたらす世界
 
Jenkinsstudy#4kokawa
Jenkinsstudy#4kokawaJenkinsstudy#4kokawa
Jenkinsstudy#4kokawa
 
Jenkins実践入門目次チラ見せしちゃいます
Jenkins実践入門目次チラ見せしちゃいますJenkins実践入門目次チラ見せしちゃいます
Jenkins実践入門目次チラ見せしちゃいます
 
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1
 
CI(継続的インテグレーション)
CI(継続的インテグレーション)CI(継続的インテグレーション)
CI(継続的インテグレーション)
 
Net なプロジェクトでも jenkins を使ってみた
Net なプロジェクトでも jenkins を使ってみたNet なプロジェクトでも jenkins を使ってみた
Net なプロジェクトでも jenkins を使ってみた
 
「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリー「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリー
 
AWS Black Belt Online Seminar AWS上のJenkins活用方法
AWS Black Belt Online Seminar AWS上のJenkins活用方法AWS Black Belt Online Seminar AWS上のJenkins活用方法
AWS Black Belt Online Seminar AWS上のJenkins活用方法
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
 
Gamedevenvstudy1
Gamedevenvstudy1Gamedevenvstudy1
Gamedevenvstudy1
 
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
 
Jenkinsの導入 Vol.01
Jenkinsの導入 Vol.01Jenkinsの導入 Vol.01
Jenkinsの導入 Vol.01
 
[LT] Continuous Delivery
[LT] Continuous Delivery [LT] Continuous Delivery
[LT] Continuous Delivery
 
Osdt2015 saito
Osdt2015 saitoOsdt2015 saito
Osdt2015 saito
 
はじめての CircleCI
はじめての CircleCIはじめての CircleCI
はじめての CircleCI
 
もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順
 
TFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょTFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょ
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
 
Hudson (JJUG CCCにて)
Hudson (JJUG CCCにて)Hudson (JJUG CCCにて)
Hudson (JJUG CCCにて)
 
vSphere 4の気になる機能を試してみた
vSphere 4の気になる機能を試してみたvSphere 4の気になる機能を試してみた
vSphere 4の気になる機能を試してみた
 

jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー