skillup

技術ブログ

Java プログラミング全般

CIことはじめ

投稿日:2015年3月30日 更新日:

業務でJavaのテキスト変換ツールを作成。

プログラムよりもCIツールを使って他人の環境下で正常に稼動させるためにどうするかの調査に時間かかりましたね。

今回やりたかったことは下記の通りです。いわゆるCIの初歩です。

  1. ローカルでNetbeansを使って、コーディング
  2. 出来上がったらGitで開発サーバーにアップ&redmineと連携
  3. jenkinsでビルド&デプロイ
  4. 他のメンバーがそこからダウンロードして使う。

という流れです。

まずやりたかったことですが、以下の点がポイントです。

  • 実行ファイルと設定系の情報ファイルをわけ、実行ファイルはjar形式にして固める。
  • 設定系のファイルは変更する可能性があるためjarにいれず、そのままディレクトリの中においておく(jarにいれてもいいのかもしれませんが練習のため)
  • デプロイされた成果物はjava -jar で実行し、同じディレクトリにある設定ファイルを指定すれば処理が無事に実行される。

これがnetbeansがない環境でもできるようにしないといけないです。(ビルド&デプロイはjenkinsが行うため。)

なのでまずやっておくこととして、下記の処理を行います。

設定系のファイルをjarにいれない

これはNetbeansで除外の設置をしておきます。

jarファイルから除外ファイルを作りたいとき

Netbeansのプロジェクトのディレクトリで
右クリック→プロパティ→ビルド→パッケージングで「JARファイルから除外」を選択。

除外パターンは下記の通りです。(それぞれのパターンはカンマ区切りで定義。)
regex.csvを除外したいとき
**/regex.csv
sampleディレクトリを除外したいとき
**/sample/
拡張子がpropertiesのファイルを除外したいとき
**/*.properties

これで設定系のファイルを除外することができます。

jenkins環境下でビルド&デプロイ

予備知識として、

Netbeansでの実行→コンパイルし、クラスファイルの起動
ビルド→Antやmavenを元にclean,compile,test,jarなどの処理

※netbeansでビルドしたときに出力を見ると何をしているかわかります。
※clean,compileなどの動作のことをターゲットといいます。

今回はAntを使いましたが、mavenでも流れは一緒だと思います。

NetbeansでビルドをしたときはAntがbuild.xmlを実行しています。

ためしに、antを直で実行すると自分でbuildできます。

netbeansの場合、AntのパスはC:\Program Files\NetBeans 8.0.2\extide\ant\bin
なので、ここに移動し、

ant -f ビルドファイル ターゲット

と入力してあげれば処理が始まります。jenkinsでも同様のことを行います。

jenkinsのプロジェクトの画面に移動し、

ビルドでAntの呼び出し、

使用するAnt:Ant

ターゲット:jar(buildなどでもよいかもしれません。)

ビルドファイル: ./build.xml

と入力してあげればビルド実行時にAntがbuild.xmlを読み込んでビルド&デプロイをしてくれます。(無事にjarファイルができます。)

※注意!

jenkinsはJavaやAnt,mavenなどを自動でインストールできます。逆に言うとjenkinsを使わずにインストールした場合、下記エラーがでます。

FATAL: Cannot find executable from the chosen Ant installation “Ant”

Error: JAVA_HOME is not defined correctly.

この場合、Jenkinsの設定画面でAntやJavaのインストールパスを設定してあげないと正常に動きません。コマンドからecho $JAVA_HOMEとかやっても普通に存在しているのにjenkinsでは動かないということがおきてしまいます。

ビルド後の処理

が、このままだと設定系のファイルがjarと同じディレクトリにありません。srcディレクトリにはあるんですがいちいち別々にダウンロードするのはもったいないため、
コピーコマンドでコピーするようにしました。

jenkinsではビルド後に任意の処理を実行することができます。(ようやく便利さがわかってきたかも・・・)

個々のプロジェクトの画面に移動し、ビルド→ビルド手順の追加→シェルの実行を選んで下記コマンドを実行。

regex.csv、config.properties、sampleというファイルとディレクトリをdist以下に移動させることが目的です。

これで一通り、ビルド&デプロイが終了しました。ほんとはテストまでやらないといけないのですが・・・また後日。

他にも他の環境で実行させるときにネックがひとつあったのでメモ

javaで実行中のファイルのディレクトリを取りたいとき

で表示できます。意外に情報なかったんで書いときました。

-Java, プログラミング全般
-,

執筆者:


comment

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

関連記事

no image

VSCodeのPluginなど

Vscodeで使っているPluginなど Contents1 基本2 UML3 git4 PHP コードフォーマット5 golang6 CSV整形 基本 Japanese Language Pack …

no image

ページャープラグイン dataTable

レコードを一覧表示する上で意外と面倒くさいのがページャーでしょう。 自力で作成してもよいのですが、なかなかこれが面倒だったりします。 また近年ではリンクを踏ませずに、スクロールするだけで表示ができる形 …

no image

ガベージコレクタに関して

本日はガベージコレクタに関して。 Contents1 ガベージコレクタとは?1.1 1 nullを代入1.2 2 参照変数を他のオブジェクトに割り当てる1.3 finalize()メソッドの定義 ガベ …

no image

ログ検索について(Application Insightsを例に)

現在のプロジェクトではインフラ環境をAzureで構築していますが、ログをApplication Insights(Azure上の管理画面から使えるサービス)で管理してます。 世界一わかりみの深いAPM …

no image

webの仕組み その1 Webの基本的なイメージ

Webの仕組みについて基礎からちょっと勉強しようかと。自分用なのでまとまってません(爆) Contents1 Webの基本的なイメージ2 HTTPメソッド Webの基本的なイメージ ネットワーク上のリ …

アーカイブ