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

変数の役割について

前回のエントリーの主眼は変数を置くことで、適切な情報量に分割し、コードを読みやすくしよう、ということでした。 今回はそれとは少し逆の観点でして、不要な変数を削除して、コードを読みやすくしよう、というこ …

no image

PCクラッシュ時に備えて

先日、ずっとメインで使っていた会社のノートPCがクラッシュし、再起不能になりました。ファイルなんかはクラウドで管理していたものが多かったので実害はあまりなかったんですが、当然ゼロではありませんでした。 …

no image

コメントについて

リーダブルコード 第5・6章はコメントについて。 今回はコメントです。ここは結構賛否両論になるところではないかと思います。 ざっくり分けると「できるだけコメントは詳しく書くこと」という意見と「コメント …

no image

トランザクション、ロールバックに関する考察

今までトランザクションの単位は基本的に処理の開始から終了までを範囲にすることが多かったのですが(ループがある場合はループ全体ではなく、1ループをトランザクションとみなします)、複数の処理が絡む場合、不 …

no image

フィールド以外のプロパティをエンティティに持たせる

JPAでは基本的に1テーブル、1クラスです。 このためプロパティは必然的にテーブルのフィールドに対応しています。 ただ、必ずしもプロパティだけでなく、臨時で持たせておきたい、プロパティがあったりします …

アーカイブ