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

Javaでのスクレイピング

スクレイピングというと一般的にはRubyが一番有名なようですが、もちろんスクレイピング自体はどの言語でも行うことができます。 Contents1 スクレイピングの手法1.1 正規表現1.2 HTMLパ …

no image

Glassfishの暴走に関して

JavaEEのアプリケーションサーバーではglassfishを使っているんですが、 メモリをかなり食うのと、頻繁に暴走してIDEからの処理を一切受け付けなくなることが多いです。 まだまだ全然対処法がわ …

no image

vagrant 複数ホストを起動

ansbileを使おうと思ったんですが、ansibleはホスト1→ホスト2という構成になっているため、2台のホストがないと使えません。 MACであればローカル環境からいけますし、Windowsでもcy …

no image

CSVの入出力に関して

業務でCSVの入出力と格闘中。 まあよくある頻出の作業だったりするんですが、自前でやるとなかなか面倒です。 面倒なポイントとしては クオートのエスケープ カンマのエスケープ ヘッダーとの結合 ですかね …

no image

ansible host指定,変数の外だし,ユーザー追加

Ansibleにてhostユーザーやユーザーの追加などす。 Contents1 ホストの指定2 ユーザーの追加2.1 変数を別ファイルに2.2 パスワードのハッシュ化2.3 パスワードなしでsudo2 …