Atlassian SDKを入れてみる/開発用JIRAの起動


## やること / やらないこと

### やること
* プラグインの開発やデバッグが出来るように、AtlassianのSDKを入れます。
* [Explore the Installed SDK and the atlas Commands](https://developer.atlassian.com/display/DOCS/Explore+the+Installed+SDK+and+the+atlas+Commands) のチュートリアルまでを試します。

#### 追記 20140427
* 本来はConfluenceの動作確認／プラグインを書いたりすることが目的ですが、AtlassianのSDKを使ってみることをまず第一にしています。
* このため、Atlassianのチュートリアルに従い、最初はJIRAをベースに試しました。
* Confluenceで実施したい方は、中盤で触れている起動コマンドを、下記のように修正して下さい。
 * atlas-run-standalone --product confluence


### やらないこと

* 実際の開発（コマンドラインもしくはIDE）。
* Next Step以降 [Create a HelloWorld Plugin Project](https://developer.atlassian.com/display/DOCS/Create+a+HelloWorld+Plugin+Project)

## MacOS版をダウンロード
* MacOSではインストーラーがあるので、そちらをダウンロード＆実行。
* うまく入ると、/usr/local/bin/ にパスが通った形でコマンドがインストールされます。
* SDKの中には、専用のMaven2も一緒に入っています。


```title:確認してみる
% atlas-version 

ATLAS Version:    4.2.20
ATLAS Home:       /usr/share/atlassian-plugin-sdk-4.2.20
ATLAS Scripts:    /usr/share/atlassian-plugin-sdk-4.2.20/bin
ATLAS Maven Home: /usr/share/atlassian-plugin-sdk-4.2.20/apache-maven
--------
Executing: /usr/share/atlassian-plugin-sdk-4.2.20/apache-maven/bin/mvn --version -gs /usr/share/atlassian-plugin-sdk-4.2.20/apache-maven/conf/settings.xml
Apache Maven 2.1.0 (r755702; 2009-03-19 04:10:27+0900)
Java version: 1.7.0_55
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/jre
Default locale: ja_JP, platform encoding: UTF-8
OS name: "mac os x" version: "10.8.5" arch: "x86_64" Family: "mac"

% which atlas-version
/usr/local/bin//atlas-version
```

atlassian- で、どんなコマンドが入っているか確認してみます。


```
% atlas-

atlas-clean                            atlas-create-refapp-plugin-module
atlas-cli                              atlas-create-stash-plugin
atlas-clover                           atlas-create-stash-plugin-module
atlas-compile                          atlas-debug
atlas-create-bamboo-plugin             atlas-help
# etc...
```

## チュートリアルに従ってみると？

こちらのチュートリアルに従ってやってみます。

* [Explore the Installed SDK and the atlas Commands](https://developer.atlassian.com/display/DOCS/Explore+the+Installed+SDK+and+the+atlas+Commands)
* まずは、書かれてある通りに、atlas-run-standalone --product jira を実行。

```
% atlas-run-standalone --product jira
Executing: /usr/share/atlassian-plugin-sdk-4.2.20/apache-maven/bin/mvn com.atlassian.maven.plugins:maven-amps-plugin:4.2.20:run-standalone -gs /usr/share/atlassian-plugin-sdk-4.2.20/apache-maven/conf/settings.xml -Dproduct='jira'
[INFO] Scanning for projects...
Downloading: https://maven.atlassian.com/repository/public/com/atlassian/maven/plugins/maven-amps-plugin/4.2.20/maven-amps-plugin-4.2.20.pom
8K downloaded  (maven-amps-plugin-4.2.20.pom)
Downloading: https://maven.atlassian.com/repository/public/com/atlassian/amps/atlassian-amps-parent/4.2.20/atlassian-amps-parent-4.2.20.pom
16K downloaded  (atlassian-amps-parent-4.2.20.pom)
Downloading: https://maven.atlassian.com/repository/public/com/atlassian/pom/atlassian-public-pom/27/atlassian-public-pom-27.pom
2K downloaded  (atlassian-public-pom-27.pom)
Downloading: https://maven.atlassian.com/repository/public/com/atlassian/pom/atlassian-base-pom/35/atlassian-base-pom-35.pom
19K downloaded  (atlassian-base-pom-35.pom)
Downloading: https://maven.atlassian.com/repository/public/com/atlassian/maven/plugins/maven-amps-plugin/4.2.20/maven-amps-plugin-4.2.20.jar
380K downloaded  (maven-amps-plugin-4.2.20.jar)
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [com.atlassian.maven.plugins:maven-amps-plugin:4.2.20:run-standalone] (aggregator-style)
[INFO] ------------------------------------------------------------------------

… 中略 …
Downloading: https://maven.atlassian.com/repository/public/org/apache/maven/shared/maven-filtering/1.0-beta-2/maven-filtering-1.0-beta-2.jar
32K downloaded  (maven-filtering-1.0-beta-2.jar)
[INFO] [amps:run-standalone]
Would you like to subscribe to the Atlassian developer mailing list? (Y/y/N/n) [Y]: 

… 中略 …

[INFO] [2.ContainerStartMojo] Resolved container artifact org.codehaus.cargo:cargo-core-container-tomcat:jar:1.4.7 for container tomcat7x
[INFO] [talledLocalContainer] Tomcat 7.x starting...
[INFO] [stalledLocalDeployer] Deploying [/Users/takano/work/atlastutorial/amps-standalone/target/jira/jira.war] to [/Users/takano/work/atlastutorial/amps-standalone/target/container/tomcat7x/cargo-jira-home/webapps]...
[INFO] [talledLocalContainer] Tomcat 7.x started on port [2990]
[INFO] jira started successfully in 241s at http://dhcp245:2990/jira
[INFO] Type Ctrl-D to shutdown gracefully
[INFO] Type Ctrl-C to exit

```

## 何がおきたの？

コンソール出力に従って、http://localhost:2990/jira にアクセスしてみると、JIRAの画面が！
デフォルトのパスワードはadmin/adminなので、そのままログイン。

ダッシュボードには、プラグイン開発用ライセンスの旨が表示されています。

![atlas-run.png](https://qiita-image-store.s3.amazonaws.com/0/27976/5464a94c-a18f-09e1-7414-37d1f5e97b6c.png "atlas-run.png")

チュートリアルに従って、何が起きたか確認してみます。

* atlas-run-standaloneは、Shell Script。実際は引数に応じてmvnが実行される。
* amps-standaloneというディレクトリが作られる。
* AtlassianのMavenリポジトリから、JIRAに必要なファイル一式がダウンロードされ、ビルド実行。
* Tomcat7 (公式ドキュメントではTomcat6)も勝手にインストールされて、JIRAをdeploy。

ディレクトリを確認してみると、確かに出来ています。

```
% tree -L 3 amps-standalone
amps-standalone
└── target
    ├── container
    │   └── tomcat7x
    ├── dependency-maven-plugin-markers
    │   └── org.apache.tomcat-apache-tomcat-zip-windows-x64-7.0.40.marker
    ├── jira
    │   ├── bundled-plugins
    │   ├── home
    │   ├── jira-original.war
    │   ├── jira-plugin-test-resources.zip
    │   ├── jira.war
    │   ├── tmp-resources
    │   └── webapp
    └── jira-LATEST.log

9 directories, 5 files
```

### じっさいに登録できる？

Webアプリケーションとしては、普通に操作できるようです。
せっかくなので、テストプロジェクトと、チケットを作成してみます。

![jira-test.png](https://qiita-image-store.s3.amazonaws.com/0/27976/2e1f846a-42f5-b810-c2f0-647d7de85162.png "jira-test.png")


## shutdownしてみると？

Ctrl+Dで、Mavenのプロセスを停止してみます。まずはJIRAがshutdownし、BUILDが終了。（FAILにはなりません）

```
[INFO] jira: Shutting down
[INFO] using codehaus cargo v1.4.7
[INFO] [cargo:stop {execution: virtual-execution}]
[INFO] [talledLocalContainer] Tomcat 7.x is stopping...
4 22, 2014 5:44:49 午前 org.apache.catalina.startup.ClassLoaderFactory validateFile
… 中略 …

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 161 minutes 42 seconds
[INFO] Finished at: Tue Apr 22 05:45:00 JST 2014
[INFO] Final Memory: 45M/276M
[INFO] ------------------------------------------------------------------------
```

評価用だから、停止してしまうとデータも消えちゃうのかな…とおもったのですが、そこは大丈夫。
もう一度、atlas-run-standalone を実行してJIRAを立ち上げると、ちゃんとチケットが表示されています。

![jira-test2.png](https://qiita-image-store.s3.amazonaws.com/0/27976/791c8034-b6b4-7145-766b-576dcc2da9cf.png "jira-test2.png")

## データはどこにあるの？

atlas-run-standalone (実際にはmvn)で起動したJIRAは、データストアとしてHSQL DBを利用します。
HSQL DBはオンメモリで稼働するDBです。（だいぶ端折っての説明で申し訳ありません）
このため、プロセスを停止するとデータがクリアされてしまいます。

JIRAのHSQLに関する設定／データは、JIRA_HOMEに当たる場所にストアされます。
今回の場合は、atlastutorial/amps-standalone/target/jira/home 以下。


```database.properties
#HSQL Database Engine
#Tue Apr 22 05:47:58 JST 2014
hsqldb.script_format=0
runtime.gc_interval=0
sql.enforce_strict_size=false
hsqldb.cache_size_scale=8
readonly=false
hsqldb.nio_data_file=true
hsqldb.cache_scale=14
version=1.8.0
hsqldb.default_table_type=memory
hsqldb.cache_file_scale=1
hsqldb.log_size=200
modified=yes
hsqldb.cache_version=1.7.0
hsqldb.original_version=1.8.0
hsqldb.compatible_version=1.8.0
```
設定ファイルにあるとおり、インメモリタイプとしての利用なので、shutdownしたら消えてしまうんじゃ…と思ったのですが、上記で確認した通りデータは消えずに残っています。

どうやら、caches/ 以下にデータが書き出されていて、それを起動時にロードしてくれているようです。
※ここは確認取れてないので、間違ってたらすみません…。

### ログはどこを見ればいい？

コンソールにも表示されますが、今回の場合は、atlastutorial/amps-standalone/target/jira-LATEST.log にも書き出されます。

## 今回のまとめ

やったことは、下記の通り。

* SDKのインストール。
* 何を使って実行されるか野確認。(java, mavenでビルドし起動）
* データや設定ファイルがどこに格納されるかの確認。

わたしは基本はRedmineのプラグインを書いたりしている身ですが、ご縁あってConfluenceやJIRAの評価をしています。
立場としては、Webアプリケーション管理者的な視点からではありますが、トラブル時に原因をさぐれるように、プラグインの追加や開発の方法を勉強したいと思っています。実際のコーディングは、たぶん大したものはできないとは思うのですが、今後も少しずつメモをアップしようと思います。

## 追記 / 更新

### 20151120: インストーラについて

- Mac版に関しては、パッケージのインストーラーの他に、Homebrewでのインストールが可能になっています
 - brewでSDKの更新が可能です
 - Ref: [Install the Atlassian SDK on a Linux or Mac System](https://developer.atlassian.com/docs/getting-started/set-up-the-atlassian-plugin-sdk-and-build-a-project/install-the-atlassian-sdk-on-a-linux-or-mac-system)

### 20151120: atlas-runのビルド時に失敗する

これもMac版情報ですが、環境変数JAVA_HOMEを明示していない場合、atlas-runの処理で実行されるMaven (mvn) は、Macに標準でインストールされているJDKを利用します。(Java1.6系)

Oracleからダウンロードして最新版のJDKをインストールしても、JAVA_HOMEを明示していないと古いバージョンのJavaを利用しようとして、ビルドの途中で失敗します。

表示されるエラー：

```
due to an API incompatibility: org.codehaus.plexus.component.repository.exception.ComponentLookupException: com/atlassian/maven/plugins/amps/RunStandaloneMojo : Unsupported major.minor version 51.0
```

Javaのバージョンが合わないというメッセージです。

ただし、『最新版のJDKをインストールしているし、java -version でも最新版のバージョンが表示されているのになぜ？』の場合は、atlas-version　コマンドで確認してみてください。

出力されるJava home、Java versionが古いバージョンになっている可能性があります。何も指定がない場合は、先のMacに標準でインストールされているJDKを見に行ってしまうからのようです。

いくつか方法がありますが、mavenのビルドだけに最新版を適用したい場合は、.mavenrcで指定できます。


```
$ ~/.mavenrc 
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_xx.jdk/Contents/Home

$ atlas-version 

ATLAS Version:    6.1.0
ATLAS Home:       /usr/local/Cellar/atlassian-plugin-sdk/6.1.0/libexec
ATLAS Scripts:    /usr/local/Cellar/atlassian-plugin-sdk/6.1.0/libexec/bin
ATLAS Maven Home: /usr/local/Cellar/atlassian-plugin-sdk/6.1.0/libexec/apache-maven-3.2.1
AMPS Version:     6.1.2
--------
Executing: /usr/local/Cellar/atlassian-plugin-sdk/6.1.0/libexec/apache-maven-3.2.1/bin/mvn --version -gs /usr/local/Cellar/atlassian-plugin-sdk/6.1.0/libexec/apache-maven-3.2.1/conf/settings.xml
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256M; support was removed in 8.0
Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-15T02:37:52+09:00)
Maven home: /usr/local/Cellar/atlassian-plugin-sdk/6.1.0/libexec/apache-maven-3.2.1
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre
Default locale: ja_JP, platform encoding: UTF-8
OS name: "mac os x", version: "10.10.5", arch: "x86_64", family: "mac"

```

参考情報：

 - [Switching the Java version the Atlassian SDK uses on Mac](https://www.k15t.com/display/DEV/Switching+the+Java+version+the+Atlassian+SDK+uses+on+Mac)