SlideShare a Scribd company logo
Jenkinsを使った
初めての継続的インテグレーション
株式会社ビズリーチ
重松啓輔
自己紹介
・重松啓輔
・新卒2年目(2015年4月入社)
・半年の研修後、キャリアトレック事業部に配属 現在B側サーバサイドを担当
2
このイベントの目的
・Jenkinsを使ってみて、継続的インテグレーションの一旦を体験してみる
・インストールから簡単なジョブ実行、
プロジェクトのコンパイル・テスト・ビルドまでを経験してみる
3
目次
継続的インテグレーションとは?
Jenkinsを使ってみよう
install
job作成
gitからcheckout
Mavenを使ったコンパイル
Mavenを使ったテスト
Mavenを使ったパッケージング jar化
4
目次
継続的インテグレーションとは?
Jenkinsを使ってみよう
install
job作成
gitからcheckout
Mavenを使ったコンパイル
Mavenを使ったテスト
Mavenを使ったパッケージング jar化
5
継続的インテグレーションとは?
continuous integration(CI)とは、主にプログラマーのアプリケーション作成時の品
質改善や納期の短縮のための習慣である。
エクストリーム・プログラミングのプラクティスの一つで、
狭義にはビルドやテスト、インスペクションなどを継続的に実行していくことを
意味する。
引用 wikipedia
6
例
7
修正
モジュールA
利用
モジュールB
Xさん
Xさんの開発担当範囲
新しく利用
Yさん
例
8
コミット コミット
コミット
コミット
テスト
バグが絡み
合って修正
大変!
例
9
コミット コミット
テスト
バグを
早期発見
すぐ修正
テスト
バグを
早期発見
すぐ修正
短いサイクルで頻繁にこれらを実施することで、
問題点を早期に発見・修正でき、不具合の原因究明も容易になる
コンパイル
デプロイ
単体テスト
結合テスト
継続的インテグレーションとは?
10
→ 問題の発見・対応を先送りしない
→ リリース直前まで問題が溜め込まれるのを防ぐ
Jenkins
・Javaで書かれたオープンソースCIツール(開発者は川口耕介さん)
・簡単に導入・使用することができる
・450以上のプラグインにより機能を拡張できる仕組み
・どんなタイミングでもスクリプトを実行できる
余談:Jenkinsのイラストロゴは「執事」
開発者にとって面倒なビルドやテストといった作業を確実にやってくれる という意味らしい
11
さっそく使ってみよう!!
12
目次
継続的インテグレーションとは?
Jenkinsを使ってみよう
install
job作成
gitからcheckout
Mavenを使ったコンパイル
Mavenを使ったテスト
Mavenを使ったパッケージング jar化
13
初めてのJenkins
今回は
1. インストール
2. 簡単なジョブ実行
3. gitからcheckout
4. コンパイル
5. テスト
6. パッケージング
に相当する作業までを通してやってみます(時間との勝負...((((;≡д≡;i))))ヵ゙タヵ゙タ㌦㌦)。
14
やってみること
push
checkout
polling
15
compile
test
jar化
ローカル開発環境
初めてのJenkins
1. インストール
2. 簡単なジョブ実行
3. gitからcheckout
4. コンパイル
5. ビルド
6. パッケージング
16
まずはインストール
[ インストール ]
1. https://jenkins.io/ から直接DL
2. インストールした場所で$ java -jar jenkins.war -> http://localhost:8080
3. 赤字のパスにあるファイルの中身をコピペ
4. cat initialAdminPassword
5. pluginのインストール(何個か失敗する可能性もあります)
6. ユーザー登録
うまく立ち上がらない場合以下を確認してみてください。
Java実行環境が入っていること($ java -versionで確認)
17
18
19
20
21
22
初めてのJenkins
23
1. インストール
2. 簡単なジョブ実行
3. gitからcheckout
4. コンパイル
5. ビルド
6. パッケージング
単純なジョブの作成をしてみる
[ ジョブ作成 ]
・新規ジョブ作成 -> フリースタイル・プロジェクトのビルド
・[ビルド手順の追加] -> [シェルの実行] -> $ echo ‘Hello Jenkins!!’ -> 保存
・ビルド実行
ジョブとは? : Jenkinsに実行させたい一連の操作を記述したもの
24
25
ここのジョブを作成してみる
push
checkout
polling
26
compile
test
jar化
ローカル開発環境
GitHubから最新のファイルを取得するジョブの作成
[ 新規ジョブ作成 ]
・フリースタイル・プロジェクトのビルド -> ソースコード管理 -> Gitをcheck
・Repository URL : 個人のgitのurl(https://github.com/ci-sample-
shigematsu/jenkins)
・SCMをポーリング -> スケジュールの設定
$ */1 * * * * (分 時 日 月 曜日 今回は毎分ごとにpollingする)
27
ここのジョブを作成してみる
push
checkout
polling
28
compile
test
jar化
ローカル開発環境
取得したファイルをコンパイルするジョブの作成
[ 新規ジョブ作成 ]
・フリースタイル・プロジェクトのビルド -> カスタムワークスペースを使用 ->
ディレクトリに $ jobs/checkout/workspace と記述
・ビルド -> Mavenの呼び出し -> ゴール $ compile
(後でやる作業)
・ビルド後の処理 ->
ビルド後の処理の追加 ->
$ doTest(次に行うジョブの名前)
[安定している場合のみ起動] にチェック
29
[ 新規ジョブ作成 ]
・フリースタイル・プロジェクトのビルド -> カスタムワークスペースを使用 ->
ディレクトリに $ jobs/checkout/workspace と記述
・ビルド -> Mavenの呼び出し -> ゴール $ test
(後でやる作業)
・ビルド後の処理 ->
ビルド後の処理の追加 ->
$ packaging(次に行うジョブの名前)
[安定している場合のみ起動] にチェック
コンパイルしたファイルをテストするジョブを作成
30
jar化するジョブを作成
[ 新規ジョブ作成 ]
・フリースタイル・プロジェクトのビルド ->
ビルド -> Mavenの呼び出し -> ゴール $ package
31
今回作ったジョブの流れ
32
checkout
package
test
compile
success
FAILURE
success
FAILURE
success
FAILURE
実際のアプリケーションなら、
この後warファイルを
tomcat配下において再起動とか...?
GitHubでpushしてみる
・https://github.com/ci-sample-shigematsu/jenkins へアクセス. Forkする
・自分のgithubでforkしたリポジトリをみる
・何かファイルを追加してみる
・プルリクを送る
33
おまけ
[ Jenkinsおじさんを怒らせたい ]
・Jenkinsの管理 -> プラグインの管理 ->
emotional-jenkins-pulgin で検索&インストール
各プロジェクトの「ビルド後の処理」にEmotinal Jenkinsを入れると..
こんな風にオコなおじさんも見られる
34
ご静聴ありがとうございました
35
(参考)CIツールを導入する上での考慮
導入コスト
コミュニティの活動具合
バージョン管理システムやチケット管理システムとの連携など
36
(参考)Mavenを使ってjavaプロジェクトを作成
git管理直下に空ディレクトリを作成し、以下をコマンドラインで入力
mvn archetype:generate ¥
-DarchetypeArtifactId=maven-archetype-quickstart ¥
-DinteractiveMode=false ¥
-DgroupId=com.sample ¥
-DartifactId=hello
生成されるディレクトリとファイル構成
37
(参考)世の中のCIツール
CruitseControl
TravisCI
CricleCI
drone.io
CODESHIP
など
38

More Related Content

PDF
アジャイルな見積りと計画づくり勉強会
Arata Fujimura
 
PDF
エンタープライズ、アーキテクチャ、アジャイルのこれから
Yusuke Suzuki
 
PDF
モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021
株式会社MonotaRO Tech Team
 
PDF
コールバックと戦う話
torisoup
 
PDF
4つの戦犯から考えるサービスづくりの失敗
toshihiro ichitani
 
PPTX
脱RESTful API設計の提案
樽八 仲川
 
PPTX
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
 
PPTX
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
SEGADevTech
 
アジャイルな見積りと計画づくり勉強会
Arata Fujimura
 
エンタープライズ、アーキテクチャ、アジャイルのこれから
Yusuke Suzuki
 
モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021
株式会社MonotaRO Tech Team
 
コールバックと戦う話
torisoup
 
4つの戦犯から考えるサービスづくりの失敗
toshihiro ichitani
 
脱RESTful API設計の提案
樽八 仲川
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
SEGADevTech
 

What's hot (20)

PDF
私たちがGCPを使い始めた本当の理由
gree_tech
 
PDF
大規模負荷試験時にやったこと
まべ☆てっく運営
 
PPTX
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
 
PDF
Amazon S3を中心とするデータ分析のベストプラクティス
Amazon Web Services Japan
 
PPTX
いまどきの組込みOSの​ ZephyrRTOSと​ OpenThreadを​ Arduino環境で遊んでみる
裕士 常田
 
PPTX
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
 
PDF
なぜ「マイクロサービス“化”」が必要なのか
Yusuke Suzuki
 
PDF
Re: ゼロから始める監視設計
Masahito Zembutsu
 
PDF
Cinemachineで見下ろし視点のカメラを作る
Unity Technologies Japan K.K.
 
PDF
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Toshiaki Maki
 
PDF
Riderはいいぞ!
UnityTechnologiesJapan002
 
PDF
Ninja Testing at Toteka03
Nakajima Shigeru
 
PDF
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
Kenji Hiranabe
 
PDF
失敗事例で学ぶ負荷試験
樽八 仲川
 
PDF
メタバースのビジネスモデルと技術限界
Ryo Kurauchi
 
PDF
Observableで非同期処理
torisoup
 
PDF
REST API のコツ
pospome
 
PDF
ReDos検出プログラムの作成とOSSへの適用 #seccamp
Yujiro Yahata
 
PPTX
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
Hiroyuki Ito
 
PDF
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
 
私たちがGCPを使い始めた本当の理由
gree_tech
 
大規模負荷試験時にやったこと
まべ☆てっく運営
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
 
Amazon S3を中心とするデータ分析のベストプラクティス
Amazon Web Services Japan
 
いまどきの組込みOSの​ ZephyrRTOSと​ OpenThreadを​ Arduino環境で遊んでみる
裕士 常田
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
 
なぜ「マイクロサービス“化”」が必要なのか
Yusuke Suzuki
 
Re: ゼロから始める監視設計
Masahito Zembutsu
 
Cinemachineで見下ろし視点のカメラを作る
Unity Technologies Japan K.K.
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Toshiaki Maki
 
Riderはいいぞ!
UnityTechnologiesJapan002
 
Ninja Testing at Toteka03
Nakajima Shigeru
 
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
Kenji Hiranabe
 
失敗事例で学ぶ負荷試験
樽八 仲川
 
メタバースのビジネスモデルと技術限界
Ryo Kurauchi
 
Observableで非同期処理
torisoup
 
REST API のコツ
pospome
 
ReDos検出プログラムの作成とOSSへの適用 #seccamp
Yujiro Yahata
 
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
Hiroyuki Ito
 
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
 
Ad

Similar to Jenkinsを使った初めての継続的インテグレーション (20)

PDF
Jenkins勉強会
勝信 今井
 
PDF
Jenkinsではじめる継続的インテグレーション
Masanori Satoh
 
PPTX
入門!Jenkins
Shuntaro Saiba
 
PPTX
Jenkins勉強会 in 札幌 第一部
cactusman
 
PDF
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
Junya Suzuki
 
PDF
Jenkins実践入門目次チラ見せしちゃいます
Masanori Satoh
 
PDF
Jenkinsで始める継続的デリバリーと実践の道程
Masanori Satoh
 
PDF
Jenkinsについて
Satoshi Namai
 
PDF
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
Yuki Iwanari
 
ODP
Jenkins導入ライブ
Hiasyoshi Suehiro
 
PDF
Jenkinsを利用したCI、弊社導入事例
Ryoichi Obara
 
PDF
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
龍一 田中
 
PDF
jenkinsで遊ぶ
(^-^) togakushi
 
PDF
Jenkinsstudy#4kokawa
Takashi Kokawa
 
PPTX
CIのもたらす世界
Tatsuhito Kato
 
PDF
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
Masanori Satoh
 
PPTX
CI(継続的インテグレーション)
HIRA
 
PDF
Agileツール適合化分科会(ci ツール)
masanori kataoka
 
PPTX
Jenkins
cactusman
 
PDF
恋するJenkins
Hiroshi Nakao
 
Jenkins勉強会
勝信 今井
 
Jenkinsではじめる継続的インテグレーション
Masanori Satoh
 
入門!Jenkins
Shuntaro Saiba
 
Jenkins勉強会 in 札幌 第一部
cactusman
 
jenkinsのすゝめ - 継続的インテグレーションと継続的デリバリー
Junya Suzuki
 
Jenkins実践入門目次チラ見せしちゃいます
Masanori Satoh
 
Jenkinsで始める継続的デリバリーと実践の道程
Masanori Satoh
 
Jenkinsについて
Satoshi Namai
 
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
Yuki Iwanari
 
Jenkins導入ライブ
Hiasyoshi Suehiro
 
Jenkinsを利用したCI、弊社導入事例
Ryoichi Obara
 
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
龍一 田中
 
jenkinsで遊ぶ
(^-^) togakushi
 
Jenkinsstudy#4kokawa
Takashi Kokawa
 
CIのもたらす世界
Tatsuhito Kato
 
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
Masanori Satoh
 
CI(継続的インテグレーション)
HIRA
 
Agileツール適合化分科会(ci ツール)
masanori kataoka
 
Jenkins
cactusman
 
恋するJenkins
Hiroshi Nakao
 
Ad

More from dcubeio (20)

PDF
AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
dcubeio
 
PDF
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
 
PDF
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
dcubeio
 
PDF
20171206 d3 health_tech発表資料
dcubeio
 
PDF
Go初心者がGoでコマンドラインツールの作成に挑戦した話
dcubeio
 
PDF
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
dcubeio
 
PDF
BizReach x Marketo連携
dcubeio
 
PPTX
Kinesis Firehoseを使ってみた
dcubeio
 
PDF
Apiドキュメンテーションツールを使いこなす【api blueprint編】
dcubeio
 
PPTX
春の脆弱性祭り 2017/06/13
dcubeio
 
PDF
DynamoDBを導入した話
dcubeio
 
PPTX
Play2 scalaを2年やって学んだこと
dcubeio
 
PDF
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
dcubeio
 
PPT
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
 
PDF
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
dcubeio
 
PDF
【freee】プロダクトマネージャーの仕事と魅力
dcubeio
 
PDF
【ビズリーチ】プロダクトマネージャーの仕事と魅力
dcubeio
 
PDF
Python × Herokuで作る 雑談slack bot
dcubeio
 
PPTX
HR Tech x 機械学習 導入事例紹介
dcubeio
 
PPTX
Scalaマクロ入門 bizr20170217
dcubeio
 
AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
dcubeio
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
 
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
dcubeio
 
20171206 d3 health_tech発表資料
dcubeio
 
Go初心者がGoでコマンドラインツールの作成に挑戦した話
dcubeio
 
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
dcubeio
 
BizReach x Marketo連携
dcubeio
 
Kinesis Firehoseを使ってみた
dcubeio
 
Apiドキュメンテーションツールを使いこなす【api blueprint編】
dcubeio
 
春の脆弱性祭り 2017/06/13
dcubeio
 
DynamoDBを導入した話
dcubeio
 
Play2 scalaを2年やって学んだこと
dcubeio
 
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
dcubeio
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
 
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
dcubeio
 
【freee】プロダクトマネージャーの仕事と魅力
dcubeio
 
【ビズリーチ】プロダクトマネージャーの仕事と魅力
dcubeio
 
Python × Herokuで作る 雑談slack bot
dcubeio
 
HR Tech x 機械学習 導入事例紹介
dcubeio
 
Scalaマクロ入門 bizr20170217
dcubeio
 

Recently uploaded (10)

PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 

Jenkinsを使った初めての継続的インテグレーション

Editor's Notes

  • #34: http://qiita.com/Commander-Aipa/items/d61d21988a36a4d0e58b
  • #37: https://tbd.kaitoy.xyz/2016/02/09/continuous-integration-is-dead/ jenkins使ったケーススタディ https://event.atmarkit.co.jp/events/c37be4978bc4a5a23196d6da68753962/atmarkit_report
  • #39: http://qiita.com/hiro_koba/items/282e3b2e534f4bc22d64 https://event.atmarkit.co.jp/events/c37be4978bc4a5a23196d6da68753962/atmarkit_report