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

Post on 07-Jan-2017

209 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

compiletestjar 化

ローカル開発環境

初めての 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 で確認 )

コマンドを実行した場所に jenkins.war が保存されていること

Jenkins はデフォルトで 8080 のポートを使用します。他のソフトやサービスで 8080 ポートを使用していないか確認して下さい。 Jenkins のポートは、実行時のポート指定( java -jar jenkins.war –httpPort=《任意のポート》)で変更することができます。

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

compiletestjar 化

ローカル開発環境

GitHub から最新のファイルを取得するジョブの作成[ 新規ジョブ作成 ]

・フリースタイル・プロジェクトのビルド -> ソースコード管理 -> Git をcheck

・ Repository URL : 個人の git の url(https://github.com/ci-sample-shigematsu/jenkins)

・ SCM をポーリング -> スケジュールの設定$ */1 * * * * ( 分時日月曜日今回は毎分ごとに polling する )

27

ここのジョブを作成してみる

push

checkout

polling

28

compiletestjar 化

ローカル開発環境

取得したファイルをコンパイルするジョブの作成

[ 新規ジョブ作成 ]

・フリースタイル・プロジェクトのビルド -> カスタムワークスペースを使用-> ディレクトリに $ jobs/checkout/workspace と記述

・ビルド -> Maven の呼び出し -> ゴール $ compile

( 後でやる作業 ) ・ビルド後の処理 ->

ビルド後の処理の追加 -> $ doTest( 次に行うジョブの名前 ) [安定している場合のみ起動 ] にチェック

29

[ 新規ジョブ作成 ]

・フリースタイル・プロジェクトのビルド -> カスタムワークスペースを使用->

ディレクトリに $ jobs/checkout/workspace と記述

・ビルド -> Maven の呼び出し -> ゴール $ test

( 後でやる作業 ) ・ビルド後の処理 ->

ビルド後の処理の追加 -> $ packaging( 次に行うジョブの名前 ) [安定している場合のみ起動 ] にチェック

コンパイルしたファイルをテストするジョブを作成

30

jar 化するジョブを作成

[ 新規ジョブ作成 ]

・フリースタイル・プロジェクトのビルド -> ビルド -> Maven の呼び出し -> ゴール $ package

31

今回作ったジョブの流れ

32

checkout

package

test

compilesuccess

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

top related