Playframework2.1JavaプロジェクトをJenkins on Ubuntu12.04でデプロイするまでの超ざっくりメモ
Play2.1がリリースされたと言う事で、Play2.1とJenkinsを絡める部分についての設定時のメモを。主に過程を進めていく上で主にScala環境周りで(主に実行権限とかファイルとか)エラーが出たので対処の内容になってます。
とりあえず動かしたレベルなので全然改善の余地ありだし、時間を見て追記更新する予定。
- Ubuntu12.04
- Scala 2.9.1
- Play2.1.0
Play2.1インストール
$ wget http://downloads.typesafe.com/play/2.1.0/play-2.1.0.zip $ sudo unzip play-2.1.0.zip $ sudo vi .bash_profile --------------- # add PLAY env. #export PLAY_HOME=/usr/local/bin/play-1.2.5 export PLAY_HOME=/usr/local/bin/play-2.1.0 export PATH=$PATH:$PLAY_HOME --------------- $ source .bash_profile $ which play /usr/local/bin/play-2.1.0/play
Scala周りの環境整備
- この時点で試しにPlay実行したら怒られた。
$ play java.io.FileNotFoundException: /usr/local/bin/play-2.1.0/framework/sbt/boot/update.log (そのようなファイルやディレクトリはありません) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:212) at java.io.FileOutputStream.<init>(FileOutputStream.java:165) at java.io.FileWriter.<init>(FileWriter.java:90) at xsbt.boot.Update.<init>(Checks.java:51) at xsbt.boot.Launch.update(Launch.scala:275) at xsbt.boot.Launch$$anonfun$jnaLoader$1.apply(Launch.scala:120) at scala.Option.getOrElse(Option.scala:108) at xsbt.boot.Launch.jnaLoader$2f324eef(Launch.scala:115) at xsbt.boot.Launch.<init>(Launch.scala:94) at xsbt.boot.Launcher$.apply(Launch.scala:290) at xsbt.boot.Launch$.apply(Launch.scala:16) at xsbt.boot.Boot$.runImpl(Boot.scala:31) at xsbt.boot.Boot$.main(Boot.scala:20) at xsbt.boot.Boot.main(Boot.scala)
- ディレクトリ作る。
sudo mkdir /usr/local/bin/play-2.1.0/framework/sbt/boot
- 今度は許可無いって怒られる。
$ play java.io.FileNotFoundException: /usr/local/bin/play-2.1.0/framework/sbt/boot/update.log (許可がありません) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:212) at java.io.FileOutputStream.<init>(FileOutputStream.java:165) at java.io.FileWriter.<init>(FileWriter.java:90) at xsbt.boot.Update.<init>(Checks.java:51) at xsbt.boot.Launch.update(Launch.scala:275) at xsbt.boot.Launch$$anonfun$jnaLoader$1.apply(Launch.scala:120) at scala.Option.getOrElse(Option.scala:108) at xsbt.boot.Launch.jnaLoader$2f324eef(Launch.scala:115) at xsbt.boot.Launch.<init>(Launch.scala:94) at xsbt.boot.Launcher$.apply(Launch.scala:290) at xsbt.boot.Launch$.apply(Launch.scala:16) at xsbt.boot.Boot$.runImpl(Boot.scala:31) at xsbt.boot.Boot$.main(Boot.scala:20) at xsbt.boot.Boot.main(Boot.scala) Error during sbt execution: java.io.FileNotFoundException: /usr/local/bin/play-2.1.0/framework/sbt/boot/update.log (許可がありません)
- 許可与える。
$ sudo chmod -R 777 /usr/local/bin/play-2.1.0/framework/sbt/boot
- まだ怒られる。
$ play java.io.IOException: 許可がありません at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:947) at xsbt.boot.Locks$.apply0(Locks.scala:34) at xsbt.boot.Locks$.apply(Locks.scala:27) at xsbt.boot.Update.apply(Checks.java:100) at xsbt.boot.Launch.update(Launch.scala:275) at xsbt.boot.Launch$$anonfun$jnaLoader$1.apply(Launch.scala:120) at scala.Option.getOrElse(Option.scala:108) at xsbt.boot.Launch.jnaLoader$2f324eef(Launch.scala:115) at xsbt.boot.Launch.<init>(Launch.scala:94) at xsbt.boot.Launcher$.apply(Launch.scala:290) at xsbt.boot.Launch$.apply(Launch.scala:16) at xsbt.boot.Boot$.runImpl(Boot.scala:31) at xsbt.boot.Boot$.main(Boot.scala:20) at xsbt.boot.Boot.main(Boot.scala) Error during sbt execution: java.io.IOException: 許可がありません
- 更に許可与える。
$ sudo chmod -R 777 /usr/local/bin/play-2.1.0/repository/
- 行けた〜。
$ play help Getting net.java.dev.jna jna 3.2.3 ... :: retrieving :: org.scala-sbt#boot-jna confs: [default] 1 artifacts copied, 0 already retrieved (838kB/22ms) Getting play console_2.9.2 2.1.0 ... :: retrieving :: org.scala-sbt#boot-app confs: [default] 29 artifacts copied, 0 already retrieved (5976kB/66ms) Getting Scala 2.9.2 (for console)... :: retrieving :: org.scala-sbt#boot-scala confs: [default] 4 artifacts copied, 0 already retrieved (20090kB/52ms) _ _ _ __ | | __ _ _ _| | | '_ \| |/ _' | || |_| | __/|_|\____|\__ (_) |_| |__/ play! 2.1.0 (using Java 1.7.0_13 and Scala 2.10.0), http://www.playframework.org Welcome to Play 2.1.0! These commands are available: ----------------------------- license Display licensing informations. new [directory] Create a new Play application in the specified directory. You can also browse the complete documentation at http://www.playframework.org. $
これでPlay2が動くようになった。
ついでJenkins周り。まずは任意のプロジェクト(フリースタイル・プロジェクト)を作成。以降関連する設定を追記して行く。
Jenkins:Mercurialの設定
Repository URL | https://(Bitbucketユーザ名):(Bitbucket接続パスワード)@bitbucket.org/(Bitbucketユーザ名)/(リポジトリプロジェクト名) |
Branch | default |
リポジトリブラウザ | bitbucket |
URL | 作成し、プロジェクトをpushしたリポジトリURL |
Jenkins:シェルの実行設定
-
- 恐らくもっとスマートに書ける方法があるとは思うが、ひとまず『意図した動作をする』コードを書き走ったものを残す。適宜改善して最適なスクリプト文を随時更新の方向で。
sudo chmod -R 777 /var/lib/jenkins/jobs/playfw21java-build/workspace/ …(1) cd /var/lib/jenkins/jobs/playfw21java-build/workspace/ …(2) /usr/local/bin/play-2.1.0/play clean compile stage …(3) sudo chmod -R 777 project/ target/ …(4) /usr/local/bin/play-2.1.0/play start & …(5)
-
- (1).実行対象のプロジェクトに権限付与
- (2).プロジェクト配下に移動(※この前に、プロジェクトをリネーム等したほうが綺麗かもしれない)
- (3).実行準備諸々
- (4).Playアプリケーションを実行出来るように権限付与
- (5). バックグラウンドで実行(start:本番モード run:開発モード)
これでひとまずゴール。後は設定内容のスマート化やnginx等の連携設定等も絡めていく方向で。