IBM Cloudを用いてJIRA Softwareで、日々のタスク管理をはじめる。


以前は、BacklogやRedmineを使っていましたが、少しずつJIRAに移行しつつあります。JIRAは、ソフトウェア開発とソフトウェア開発以外の各業務の進捗管理を行うツールで、日々の進捗や工数を管理することに向いています。

プライベートで開発しているアプリなどの進捗管理にJIRA Softwareを使い始めたので、セットアップ手順をご紹介します。

# 使用サーバー

Ibm Cloud IaaSにて、CPU2コア、メモリ4GB、CentOS7.x minimalの仮想サーバーを用意し、Docker公式ドキュメントに従って、Docker-ce を導入します。Dockerを使うことで、検証や開発、別のクラウドサービスなどに移行が容易になるため個人的にDockerを好んで使用しています。

#JIRA Softwareをインストール
Docker上で、Ubuntu 16.04のコンテナをベースにJIRA Softwareをインストールします。

```
# apt-get update -y && apt-get upgrade -y
# apt-get install software-properties-common wget nano tzdata
# echo Asia/Tokyo > /etc/timezone
# dpkg-reconfigure --frontend noninteractive tzdata
# add-apt-repository ppa:webupd8team/java
# apt-get update -y
# apt-get install oracle-java8-installer
# cd /usr/local/src
# wget http://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-7.9.1-x64.bin
# chmod a+x atlassian-jira-software-7.9.1-x64.bin
# ./atlassian-jira-software-7.9.1-x64.bin
```
画面内の指示に従って、インストールを進めます。JIRA Softwareを起動するかどうか求められますので、n(No)を入力します。
JIRA SoftwareのURLを変更します。下記のように書き換えると、http://(IPアドレス or ドメイン名):8080/jira で利用することができるようになります。

```
# chown -R jira:jira /var/atlassian/
# nano /opt/atlassian/jira/conf/server.xml 
<Context path="" docBase → <Context path="/jira" docBase に書き換え
```
次に、Dockerで運用するための起動スクリプトを作成します。

```
# cd /
# nano jira-start.sh

#!/bin/sh
service jira start
/bin/bash

# chmod a+x jira-start.sh
```
docker run の際に、末尾のコマンド指定に、/jira-start.hs を指定することで、コンテナ起動時にJIRA Softwareを起動することができます。

## コンテナをイメージとして保存
Ctrl+p+q で作業中のコンテナから抜けて、docker ps -a で起動中のコンテナIDを確認します。ここでは、仮にコンテナIDをas34df567とします。

```
# docker commit as34df567 ubuntu:jira791
```
コンテナを保存しましたら、docker imagesで確認します。ubuntu:jira791 というイメージがあるはずです。
作業中のコンテナを終了し削除します。docker stop コンテナID、docker rm コンテナID の順に作業します。


動かすのはKubernetesベースでも良いのですが、今回使用したサーバー版のJIRA Softwareのライセンスの都合上、スケールアウトが出来ず、スケールアップ前提のため仮想サーバーで構築した方がコストパフォーマンスに優れます。Dockerベースで作っていますので、Kubernetesに移行することも可能です。


#データベースを用意
JIRA Softwareで使用するデータベースには、PostgreSQLを使用します。1人で構築・運用するため、データベース運用を丸投げすべく、IBM Compose for PostgreSQLを使用しました。
![compose_for_postgresql.PNG](https://qiita-image-store.s3.amazonaws.com/0/41414/fcdfb7b7-19a6-d427-27e9-34a82c822c11.png)


IBM Cloudのカタログから、サービスを有効化し、Windows版のpgAdminなどPostgreSQLの管理ツールで、データベースを作成します。データベースはjiraとしました。
IBM Compose for PostgreSQLで使用するポートを、ここでは、39990 とします。

#JIRA Softwareのセットアップ
docker run コマンドを実行します。
例1) docker run -itd -p 8080:8080 -p 39990:39990 --name jira-server ubuntu:jira791 /jira-start.sh

JIRA Softwareで使用する添付ファイルなどを永続ストレージに保管したい場合は、例2を参考に、docker run を実行します。

例2) docker run -itd -p 8080:8080 -p 39990:39990 --name jira-server -v /var/atlassian/application-data/:/var/atlassian/application-data/ ubuntu:jira791 /jira-start.sh

docker run 実行後、WEbブラウザにて、http://(IPアドレス or ドメイン名):8080/jira にアクセスしますとセットアップ画面が表示されます。画面右上で言語を選び、日本語画面で「自分でセットアップする」を実行し、PostgreSQLをデータベースとして指定してセットアップします。セットアップが完了しますと、下図のように利用が可能になります。
![jira_login.PNG](https://qiita-image-store.s3.amazonaws.com/0/41414/aa3af10c-971a-de30-d0f7-49facf549fd5.png)

![jira_board.PNG](https://qiita-image-store.s3.amazonaws.com/0/41414/e6ffe534-9f23-7df2-f223-49ade71de3bd.png)


#DevOps
IBM Cloudには、DevOpsサービスがあり、JIRA Softwareを統合することができます。
システム導入などでは当たり前ですが、開発と運用は常に繰り返しです。サービスインし運用が始まっても、要件漏れや追加機能などで開発はすぐに始まります。また、省力化や人件費の圧縮の要求も出てきますし、ミドルウェアやOS、ソフトウェアのバージョンアップサイクルは昔に比べて、とても早くなっています。3ヶ月や6ヶ月毎は普通のことです。
従って、開発側と運用側それぞれに両方の経験や知識が要求され、常にコミュニケーションと協業体制(コラボレーション)が求めら、そのための取り組みと取り組みを継続する状態が、DevOpsです。

# ツールチェーンに統合
DevOpsでは、ヒアリング → 課題登録 → 開発 → テスト → 実装 → 運用 → ヒアリング → 課題登録の繰り返しを行うため、コミュニケーションやコラボレーションが重要になり、複数のツールを使用します。複数のツールが連携した状態をツールチェーンといいます。
JIRA Softwareは、課題登録/管理、情報共有をメインに、各フェーズの進捗管理などで役立ちます。

IBM CloudのDevOpsサービスでは、このツールチェーンを構築することでき、そこにJIRAを統合する方法を紹介します。
IBM Cloudにログインし、DevOpsサービスからツールチェーンを作成します。ツールチェーン作成後、「ツールの追加」をクリックします。
![ツールチェーン作成_8.PNG](https://qiita-image-store.s3.amazonaws.com/0/41414/789f436c-2240-7bdb-fcdd-9da35122066d.png)

対応するツールから、「JIRA」を選択します。
![ツールチェーン作成_9.PNG](https://qiita-image-store.s3.amazonaws.com/0/41414/23b6d8b5-86af-4a58-3bff-4f4852bdb9b1.png)

JIRAのURLやツールチェーンに紐付けるJIRA内で管理するプロジェクトを指定し、「統合の作成」をクリックすれば完了です。
![ツールチェーン作成_10.PNG](https://qiita-image-store.s3.amazonaws.com/0/41414/c9d0d570-550d-c8e0-2fe3-67d17fb07cab.png)


#使ったツール・サービスなど
- IBM Cloud IaaS
    - https://www.ibm.com/cloud-computing/jp/ja/ibm-cloud_iaas/
- IBM Compose for PostgreSQL
    - https://console.bluemix.net/docs/services/ComposeForPostgreSQL/index.html
- Docker-ce
    - https://docs.docker.com/install/linux/docker-ce/centos/
- pgAdmin
    - https://www.pgadmin.org/
- TeraTerm
    - http://ttssh2.osdn.jp/
- JIRA Software


# ご質問先
IBM Cloudをよく使いますので、IBM Cloud上での構築について執筆しました。この記事について個別に話を聞いてみたいなどありましたらQiitaのプロフィールまたは[Eight](https://8card.net/p/knishikawa)にて連絡先を公開しておりますので、お気軽にご連絡ください。