こんにちは、うえだです。
前回に引き続き、開発効率のアップという事で、Jenkins上でGradleタスクを実行する方法を紹介します。
はじめに
今回の手順を行うために、以下の準備が必要です。
- 前回の「Gradleのタスクを利用して開発の効率アップ」で作成したGradleプロジェクトがGitサーバー上に置かれている。
Jenkinsジョブとしてデプロイを行う
ジョブにより、アプリケーションのビルド(war作成)とデプロイをします。
初期設定
- まず、Jenkinsが起動している場合は停止します。Jenkinsインストーラからインストールした場合、Windowsサービスに自動登録されるので、Windowsのコンピュータの管理 > サービスを開き、Jenkinsの項目を探して停止します。
- Jenkinsサーバーの使用ポートを変更します。
/jenkins.xml
を開き、8080で検索し、その部分を、ここでは50505に書き換えます。
-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=50505 --webroot="%BASE%\war" - Jenkinsを起動します。
- 初回起動の場合、起動後に「Unlock Jenkins」と出るので、Jenkinsインストールフォルダ直下のsecret/initialAdminPasswordの内容を入力欄に入力します。
- 推奨プラグインインストールの画面では左を選択します(推奨プラグインをインストールする)。
- 初期管理ユーザの入力画面(Create First Admin User)ではログイン情報を入力します。ここで入力した管理ユーザー名とパスワードは覚えておいてください。入力後、右下の「Save or Continue」をクリックします。
- JenkinsのURLを編集する画面も右下をクリックしてパスします。
- これでJenkinsの準備が完了しました。管理者の入力画面が表示されますが、左上のJenkinsリンクをクリックしてトップページに移動します。
ジョブ作成
2つのジョブを作成します。
- ビルド
- デプロイ
ビルド成功時にデプロイするため、先にデプロイジョブを作成します。
デプロイ
- 新規ジョブ作成をクリックします。
- ジョブ名を入力: deploy-gradle-sample
- 「フリースタイル・プロジェクト」を選択し、OK
-
Generalタブの「ソースコード管理」エリアで以下を入力
- Gitにチェック(下記は一例のため環境に応じて読み替えて下さい)
- リポジトリURL:
git@github.com:/gradle-sample.git
- 認証情報: Gitサーバに登録した公開鍵設定
- ブランチ指定子: */develop
-
「ビルド」エリアで以下を入力
- Invoke Gradle script
- Use Gradle Wrapper
- Tasks: copyWar shutdown start
- 高度な設定を展開し、以下を入力
- System properties:
- 例:
tomcat.home=D:\\pleiades\\tomcat\\9
- 上記のように渡す事で、Gradleコマンドのプログラム引数となります。
(-Dオプションと同じ)
- 上記のように渡す事で、Gradleコマンドのプログラム引数となります。
-
「保存」をクリック
ビルド
- 新規ジョブ作成をクリックします。
- ジョブ名を入力: build-gradle-sample
- 「フリースタイル・プロジェクト」を選択し、OK
- 「ソースコード管理」エリアに、デプロイの時と同じ内容を入力
- 「ビルド」エリアで以下を入力
- Invoke Gradle script
- Use Gradle Wrapper
- Tasks: clean war
-
「ビルド後の処理」で以下を入力
- 対象プロジェクト: deploy-gradle-sample
- 「安定している場合の起動」にチェック
-
「保存」をクリック
ジョブを実行
これでJenkinsのトップページに2つのジョブが一覧で表示されています。このうち、build-gralde-sampleの行の右端にあるボタンをクリックします。
まずbuild-gradle-sampleジョブが実行され、warのビルドが行われます。
これが成功すると、続いてdeploy-gradle-sampleが実行され、Tomcatへのwarのコピーが行われます。
2つのジョブが正常終了すると、ジョブ一覧の左にあるステータスが青となります。(失敗時は赤)
紹介したJenkinsの手順は、JenkinsをローカルPCではなく開発サーバー上にする事で、チーム開発等で共有したソースコードをすぐにデプロイするといった事も可能になります。
今回は、GradleとJenkinsを連携してビルドとデプロイの手順を効率化するための方法を紹介させていただきました。
ここまで読んでいただき、ありがとうございました。
補足事項
ジョブの自動化
GitサーバのWebhook等の機能を使う事で、GitへのファイルPush時に自動的にJenkinsジョブを実行させるといった事も可能です。
Tomcatの再起動
今回は開発サーバー側のTomcatのbatファイルを利用しましたが、インストーラでインストールする等してWindowsサービスとして登録されている場合はコマンドから再起動する事も可能です。
JenkinsのGit認証(SSH)について
今回説明を省略しましたが、Git認証にSSHを使用している場合、下記の設定がJenkinsに必要です。
- トップページのメニューから「認証情報 > System > グローバルドメイン」と進み、「認証情報の追加」を選択します。
- 以下を入力して保存します。
- 種類: SSHユーザー名と秘密鍵
- スコープ: グローバル
- ユーザー名: Gitサーバーに登録してある認証ユーザー名
- 秘密鍵: 直接入力を選択し、鍵入力欄に秘密鍵ファイルの内容をペースト
- パスフレーズ: 秘密鍵に設定されていれば入力
- これでジョブ作成画面の「ソースコード管理」のGit設定で認証情報として選択できるようになります。