skillup

技術ブログ

Java サーバー・ネットワーク

jenkinsのオートデプロイ

投稿日:

久々にJavaやりました。

やりたいこと

  1. 作成しているアプリはJavaServelet、アプリケーションサーバーはglassfish
  2. ローカルでgitでコミット→プッシュ
  3. これをトリガーにしてjenkinsでビルド→デプロイ(デプロイするサーバーは別)

git→jenkins連携はこちらに解説してます。
jenkins構築
Git→Jenkinsの連携
Git→Jenkinsの連携 その2

ハマりポイント

Antでのjobの設定

いままでほとんどmavenだったので・・・

まずビルドファイルはディフォルトでbuild.xmlなら何も書かなくてOKです。下手に書くとファイルがないと怒られます。

http://qiita.com/opengl-8080/items/a1ca02673c6ab86d173c

jenkinsでビルドできない

Javaだと頻繁にありますがIDEだとOK(ライブラリが内包されているので)だけど、別環境だとダメってパターン。ほとんどがライブラリ関係です。

出たエラーは次の2箇所

Jenkinsのjobのビルド→Antの呼び出しでクラスパスをjenkinsの管理画面でAntのプロパティとして設定してあげればOK

j2ee.server.home=/usr/local/glassfish4/glassfish/で解決

http://stackoverflow.com/questions/9721283/j2ee-server-home-missing-during-netbean-project-build

org-netbeans-modules-java-j2seproject-copylibstask.jarが入っていないためにエラーが起こる。(ローカルだとnetbeansには入っている)

このjarファイル自体をWEB-INFの中に入れてあげて

libs.CopyLibs.classpath=/var/lib/jenkins/jobs/webScan/workspace/web/WEB-INF/lib/org-netbeans-modules-java-j2seproject-copylibstask.jar

とパスを先ほどと同様Antのプロパティに設定してあげればOK

http://stackoverflow.com/questions/23532966/the-libs-copylibs-classpath-property-is-not-set-up

jenkinsのオートデプロイ

これに関しては↓
glassfishへのデプロイ
今回はできたwarファイルをSSHでjenkinsサーバーからtestサーバーに運んであげる

SSHでの運び方

※最初はアプリをビルドさせる処理と送信のジョブを別々にしたほうが良いかも。

  1. SSH2Easy Pluginというプラグインをインストール
  2. あとはJenkinsの管理画面→システムの設定→Server Group Centerにhostやuserなど必要な情報を入れる
  3. 1度保存後、ServerListが保存できるのでここでServerGroupを選択し、Servernameをきめてあげ、IPを入れる
  4. プロジェクト選択画面に遷移し、ビルドの手順の追加よりRemoteSFTPUPLOADを選択、さきほど入力したものが選ばれているはず
  5. localFilePath 送る側のファイルパス remoteLocation 送られる側のファイルパス fileName ファイル名をリネームしたいとき。リネームしなくていい場合は空

最初はただのテキストファイルを送るといいかも。

testサーバーでのデプロイ

warファイルはそのままglassfishディレクトリのautodeployの中に入れてあげれば自動でWEBからアクセスできるように展開されている。

https://allabout.co.jp/gm/gc/80733/3/

jenkinsでは「SSHでの運び方」で記述したようにServer Group Centerを設定してあげればSSHで対象のサーバーにログインして操作ができます。

ビルドの手順の追加より「Remote Shell」を追加し、Serverを選んであげて、Shellの中にコマンドを記述してあげればOKです。

これで意図したパスにファイルをおいてあげればOKです。

-Java, サーバー・ネットワーク
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

日付がらみの処理に関して(MySQL&Java)

MySQL触りだして3年ぐらいたつんですがいまだに整理できないことが多いです。(特に日付がらみ) ちょっとJavaのネタと合わせて整理しておこうかなーと思います。 Contents1 MySQLの日付 …

no image

インメモリデータベース redis

インメモリデータベースのredis(レディース)について。 キャッシュとして以前はmemcachedを使っていましたが、いろいろ多機能ということでredisをちょっと触ってみようかと。 Content …

no image

大規模Webサービス技術入門 DBの分散

前回に引き続き、大規模サービスを運用するときに必要になるMySQLの知識についてのまとめ Contents1 テーブル・SQL設計2 レプリケーション機能3 パーティショニング テーブル・SQL設計 …

no image

メニュー系のCSS

よく迷うのでこれを機にまとめておこうかと。 Contents1 通常時のメニュー2 携帯(いわゆる縦のメニュー)3 ホバー時の画像選択4 小ネタ 選択されているときのメニュー 通常時のメニュー htm …

no image

JSPでのインクルード

JSPで社内アプリを作る機会があったので、メモ。 基本的なこともまだわかっていないんですが、とりあえずでてきたものから紹介してきます。 インクルードから。 ヘッダー、フッターみたいな別々に分けたりする …