Skip to content

uasano/Jenkins_Handson

Repository files navigation

Jenkins_Handson

第5回ゆるぎー Jenkinsハンズオン 資料

Jenkinsハンズオンの手引です。

やる事は以下のような内容を想定しています。

  1. Grails Webアプリのビルドと成果物としてwarファイルを保存する
  2. Webアプリのビルドが成功した時は、HerokuへデプロイするJobを実行する
  3. ビルドジョブとデプロイジョブのジョブ実行の流れをビルドパイプラインで見える化する
  4. デプロイジョブの前にアプリのテストを実行して、テストに失敗した時はデプロイジョブの実行しないようにする

演習で使用するJenkinsの環境

演習で使用するJenkinsは私のPC上で動作させています。 マシンの環境は下記の通りです。

Jenkins環境

JDK7u55をインストールして、ApacheとTomcat7をajpで連携させて、Tomcat7のwebappsディレクトリの下にjenkins.warをデプロイしてました。 (インストール方法はググると各OS向けの方法が出てくるのでググってください...)

Jenkinsのplugin

演習の内容に関係するPluginは以下の物です。

  • Build Pipeline Plugin
  • CloudBees Folders Plugin
  • GIT client Plugin
  • GIT plugin
  • HTML Publisher plugin
  • xUnit plugin

その他

Jenkins(というか、Tomcat)を実行しているユーザで、以下のコマンドが実行できるようにしていました。

  • grails (バージョンは2.3.7)
  • heroku (heroku-toolbelt/3.6.0)

多分これで演習に使ったのと同じJenkinsが作れるはず…

テンプレートJobの情報

「ここの部分が気になるので先にそこから試したい」という場合は、それぞれの個別のジョブを作っているので以下の手順でコピーしてください。

  1. 新規ジョブ作成をクリック
  2. ジョブ名に、自分が作りたいジョブの名前を入力
  3. 既存のジョブをコピーにチェック
  4. コピー元に下記の表を参照して、自分が複製したいジョブの名前を入力する。
ジョブ名 やっていること
template-build Grailsアプリのビルドと成果物としてwarファイルを保存する
template-test-failed Grailsアプリのテスト(テスト実行すると失敗)
template-test-success Grailsアプリのテスト(テスト実行すると成功)
template-deploy GrailsアプリのHerokuへのデプロイ。アプリ名はビルドパラメータで設定しています

演習用githubのリポジトリの状態

リポジトリURL:https://github.com/uasano/Jenkins_Handson

ブランチ名 状態
phase1 grailsアプリのひな形
phase2 BookのCRUD機能が追加。テストを実行すると失敗する
phase3 テストが成功する状態
master phase3と同じ。README.mdが更新されている

各ジョブを作るヒント

共通

ソースコードをGithubから取得する

Gitリポジトリからソースコードを取得するには、Jenkinsジョブで下記の設定を行います。

  1. ソースコード管理Gitにチェック
  2. RepositoriesRepository URLgit@github.com:uasano/Jenkins_Handson.gitを入力
  3. Branches to buildでビルド対象としたいブランチ名を指定。
  • phase1の場合 */phase1

Jenkinsのジョブからシェルを実行する

Jenkinsのビルドでシェルを実行するには、Jenkinsジョブで下記の設定を行います。

  1. ビルドビルド手順の追加からシェルの実行を選択。(Windows上のサーバで動いている場合はWindowsバッチコマンドの実行)
  2. シェルスクリプトのテキストボックスに実行したいコマンドを入力

ビルドジョブ

Grailsアプリケーションのwarファイルを生成するには以下のシェルコマンドを実行します。

grails war

このコマンドを実行すると、 target/<app.name>-<app.version>.war が生成されます。 app.nameapp.versionapplication.propertiesファイルで定義してあります。

ビルドで生成されたファイルを成果物として保存する時

  1. ジョブの設定でビルド後の処理ビルド後の処理の追加
  2. 成果物を保存を選択
  3. 保存したいファイルの場所を指定

テストジョブ

Grailsアプリケーションのtestファイルを生成するには以下のシェルコマンドを実行します。

grails test-app

このコマンドを実行すると、 target/test-reports ディレクトリの下にテスト結果が出力されます。

場所 出力されている形式
test-repots直下 JUnit xml形式
test-reports/html HTML
test-reports/plain テキストファイル
  • テストの実行結果の成功・失敗の推移を記録するには
  1. ビルド後の処理ビルド後の処理の追加からJUnitテスト結果の集計を選択
  2. テスト結果XMLが出力されている場所をテスト結果XMLに指定。
  • テストの実行結果レポートのHTMLをJenkinsのジョブから参照するには
  1. ビルド後の処理ビルド後の処理の追加からPublish HTML reportsを選択
  2. 追加をクリック。
  3. HTML directory to archiveにindex.htmlが出力されているフォルダを指定。

デプロイジョブ

herokuにアプリをデプロイする時は、gitのチェックアウト設定に下記の設定を追加してください。

  • Additional Behaviours追加をクリックし、Check out to specific local branchを選択
  • Branch namemasterを入力

GrailsアプリケーションをHerokuにアップロードするには、以下のシェルコマンドを実行します。

if ! git ls-remote heroku; then
  heroku create [APP_NAME]
fi
git push heroku master

APP_NAMEを省略すると、herokuが自動的に他と重複しない値を設定します。 明示的に指定すると、重複していなければその名前で公開されます。 APP_NAMEは実行するシェルスクリプト上に直接記述しても良いですし、ビルドパラメータ等で渡しても良いと思います。

if で条件分岐しているのは、一度だけ実行すれば良いからです。

ジョブとジョブを関連付ける

下流ジョブの設定

あるジョブが成功した時は、その後に別のジョブを実行させる設定。

  1. ビルド後の処理ビルド後の処理の追加から他のプロジェクトのビルドを選択
  2. ビルドするプロジェクトに実行したいジョブの名前を入力
  3. Trigger only if build is stable にチェック。

上流ジョブの設定

あるジョブを実行する前に、別のビルドを実行させる設定。

  1. ビルド・トリガ他プロジェクトのビルド後にビルドにチェック
  2. プロジェクト名に先行して実行させたいジョブの名前を設定

ビルドの上流〜下流の流れを見える化する

  1. Jenkinsのホーム画面のジョブ一覧のタブの+をクリック
  2. ビュー名に任意の名前を設定
  3. Build Pipeline Viewを選択
  4. OKをクリック
  5. LayoutSelect Initial Jobに一連のビルドの起点になるジョブを選択
  6. No Of Displayed Builds5を選択
  7. 保存をクリック

About

これは第5回ゆるぎーのハンズオン用リポジトリです

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors