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

GlassFish&Junitの不具合

JavaEE(JSF+JavaBean+EJB+JTA)でアプリを製作しているのですが、EJBの部分のjunitができないことが判明しました。 正確に言うとラムダ式を使うと不具合がでます。原因としては …

no image

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

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

no image

nginxの設定&php-fpmインストール

本日、久しぶりにPHPのWebアプリを別サーバーに移行したのですが、nginxの設定でかなり手間取りましたのでちょっと記録しておきます。 Contents1 nginxの設定1.1 インストール1.2 …

no image

PHPのheroku(ヘロク)へのデプロイ

有名なPaasのサービスであるherokuをちょっといじったのでその時のメモなどを。 Contents1 アカウント開設2 Heroku | Cloud Application Platform3 デ …

no image

CIことはじめ

業務でJavaのテキスト変換ツールを作成。 プログラムよりもCIツールを使って他人の環境下で正常に稼動させるためにどうするかの調査に時間かかりましたね。 今回やりたかったことは下記の通りです。いわゆる …