日本でのアトラシアン(Atlassian)製品導入No.1

  1. HOME

リックソフトブログ

2018/12/21

SeleniumでJiraのセットアップを自動化してみる

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Author

大野 智之Tomoyuki Ohno

大野 智之

皆さんはセットアップの自動化は好きでしょうか?私は好きです。
さて、仕事柄Jiraのインストールやセットアップを何度も行うことがありますが、Jiraのセットアップは毎回手間に感じることがあります。
そこで、今回はJiraのセットアップをSeleniumで自動化してみることにしました。

Seleniumとは?

Seleniumは、Webブラウザの自動化ツールです。
ChromeやFirefox,Edge,Internet Explorer,Safari等のWebブラウザの操作を自動化することができます。
自動化の処理は、任意の言語で記述することができます。対応言語は、こちらで確認することができます。

Seleniumでできること

Jiraの環境構築には、大まかに次のような作業があります。

  • インフラの設定(リバースプロキシ、DNS、SSL証明書、ファイアウォール等)
  • 仮想マシンの作成
  • 仮想マシンの設定
  • データベースサーバのインストール
  • データベースサーバの設定
  • アプリケーションのインストール
  • アプリケーションの設定
  • アプリケーションのセットアップ

この中でSeleniumで自動化が可能なものは、「アプリケーションのセットアップ」になります。
SeleniumはWebブラウザの操作を自動化するツールであるため、Webブラウザの操作以外の自動化は行えません。
「アプリケーションのセットアップ」以外の自動化が必要となる場合は、別の方法を検討する必要があります。

Seleniumによる自動化

ここからは、Seleniumによる自動化を実際に行ってみます。言語はPythonを使用しました。

動作環境

下記のコードは、次の環境にて検証を行いました。

項目 設定内容
OS Ubuntu 18.04LTS
※Ubuntu 18.04LTS(Ubuntu Server 18.04.1 LTS)のISOイメージはUbuntuのオフィシャルサイトより予めダウンロードしておきます。
※Seleniumの動作に必要となる設定に関しては、こちら(Qiitaの投稿)を参照ください。
メインメモリー 4096 MB
プロセッサー数 2
ストレージ容量 100GB
ネットワーク アダプター1:NAT
言語 Python 3.6(aptよりインストール)
Jiraバージョン Jira 7.13.0, Jira7.12.3, JIRA 7.6.9で動作しました

コード

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import os
import time
 
# -----------------------------------------------------------------------
# 初期設定
# -----------------------------------------------------------------------
 
# 60秒待機する
time.sleep(60)
 
# 初期設定
# ※以下はUbuntu 18.04 LTS + Chromium(aptからインストール)の組み合わせで、Headless実行する場合の設定です
# ※実行環境環境に応じて変更が必要となります
# ※Headlessで動作させない場合は、add_argumentは全て不要です。
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--window-size=1024,768')
 
# ドライバを開く(Chromedriverを読み込む)
# ※以下はUbuntu 18.04 LTS + Chromium(aptからインストール)の組み合わせで、Headless実行する場合の設定です
# ※実行環境環境に応じて変更が必要となります
driver = webdriver.Chrome(executable_path="/usr/lib/chromium-browser/chromedriver", chrome_options=options);
 
# 要素検索の待ち時間を最大600秒とする(600秒を超えた場合はException発生)
driver.implicitly_wait(600)
 
# JiraのURLを定義する
base_url="https://<JIRAのURL>"
setup_url=base_url+"/secure/SetupMode!default.jspa"
 
# データベースの設定を定義する(PostgreSQL)
db_host="<DBホストのIPアドレス>"
db_port="5432"
db_name="<DB名>"
db_username="<DBユーザー名>"
db_password="<DBパスワード>"
 
# 管理者ユーザーの設定を定義する
admin_name="<管理者ユーザー名>"
admin_email="<管理者ユーザーのE-Mailアドレス>"
admin_password="<管理者ユーザーのパスワード>"
 
# アプリケーションタイトルを定義する
app_title="<アプリケーションタイトル>"
 
# アプリケーションのライセンスキーを定義する
# ※ライセンスキーは改行を除き、1行でセットする
license_key= "<アプリケーションのライセンスキー>"
 
# -----------------------------------------------------------------------
# 処理開始
# -----------------------------------------------------------------------
 
# セットアップURLを開く
try:
    driver.get(setup_url)
except:
    driver.close()
 
# -----------------------------------------------------------------------
# 1.Jira Setup
# -----------------------------------------------------------------------
 
# Jira Setup画面が表示されるまで待機する
while driver.current_url != base_url + '/secure/SetupMode!default.jspa':
    print("Wait...")
 
# Jira Setup画面の「I'll set it up myself」を選択して、次へ進む
driver.find_element_by_xpath("//div[@data-choice-value='classic']").click()
 
# 次画面へ進む
driver.find_element_by_xpath("//input[@type='submit']").click()
 
# -----------------------------------------------------------------------
# 2.Database Setup
# -----------------------------------------------------------------------
 
# Database Setup画面が表示されるまで待機する
while driver.current_url != base_url + '/secure/SetupDatabase!default.jspa':
    print("Wait...")
 
# 「My Own Database (recommended for production environments)」を選択する
driver.find_element_by_xpath("//input[@id='jira-setup-database-field-database-external']").click()
 
# Database Typeを「PostgreSQL」にする
driver.find_element_by_xpath("//input[@id='jira-setup-database-field-database-type-field']").clear()
driver.find_element_by_xpath("//input[@id='jira-setup-database-field-database-type-field']").send_keys("PostgreSQL")
driver.find_element_by_xpath("//input[@id='jira-setup-database-field-hostname']").send_keys(Keys.ENTER)
 
# Hostnameを入力する
driver.find_element_by_xpath("//input[@id='jira-setup-database-field-hostname']").send_keys(db_host)
 
# Usernameを入力する
driver.find_element_by_xpath("//input[@id='jira-setup-database-field-username']").send_keys(db_username)
 
# Passwordを入力する
driver.find_element_by_xpath("//input[@id='jira-setup-database-field-password']").send_keys(db_password)
 
# Databaseを入力する
driver.find_element_by_xpath("//input[@id='jira-setup-database-field-database-name']").send_keys(db_name)
 
# 次画面へ進む
driver.find_element_by_xpath("//input[@type='submit']").click()
 
# -----------------------------------------------------------------------
# 3.Set up application properties
# -----------------------------------------------------------------------
 
# Set up application propertiesが表示されるまで待機する
while driver.current_url != base_url + '/secure/SetupApplicationProperties!default.jspa':
    print("Wait...")
     
# Application Titleを入力する
driver.find_element_by_xpath("//input[@name='title']").send_keys(app_title)
 
# Base URLを入力する
driver.find_element_by_xpath("//input[@name='baseURL']").clear()
driver.find_element_by_xpath("//input[@name='baseURL']").send_keys(base_url)
 
# 次画面へ進む
driver.find_element_by_xpath("//input[@type='submit']").click()
 
# -----------------------------------------------------------------------
# 4.Specify your license key
# -----------------------------------------------------------------------
 
# Specify your license keyが表示されるまで待機する
while driver.current_url != base_url + '/secure/SetupLicense!default.jspa':
    print("Wait...")
 
# Your License Keyを入力する
driver.find_element_by_xpath("//textarea[@id='licenseKey']").send_keys(license_key)
 
# 次画面へ進む
driver.find_element_by_xpath("//input[@type='submit']").click()
 
# -----------------------------------------------------------------------
# 5.Set up administrator account
# -----------------------------------------------------------------------
 
# Set up administrator accountが表示されるまで待機する
while driver.current_url != base_url + '/secure/SetupAdminAccount!default.jspa':
    print("Wait...")
 
# Full nameを入力する
driver.find_element_by_xpath("//input[@name='fullname']").send_keys(admin_name)
 
# Email Addressを入力する
driver.find_element_by_xpath("//input[@name='email']").send_keys(admin_email)
 
# Usernameを入力する
driver.find_element_by_xpath("//input[@name='username']").send_keys(admin_name)
 
# PasswordとConfirm Passwordを入力する
driver.find_element_by_xpath("//input[@name='password']").send_keys(admin_password)
driver.find_element_by_xpath("//input[@name='confirm']").send_keys(admin_password)
 
# 次画面へ進む
driver.find_element_by_xpath("//input[@type='submit']").click()
 
# -----------------------------------------------------------------------
# 6.Set up email notifications
# -----------------------------------------------------------------------
 
# Set up email notificationsが表示されるまで待機する
while driver.current_url != base_url + '/secure/SetupAdminAccount.jspa':
    print("Wait...")
 
# 次画面へ進む(デフォルトから変更なし)
driver.find_element_by_xpath("//input[@type='submit']").click()
 
# -----------------------------------------------------------------------
# 7.Welcome to Jira
# -----------------------------------------------------------------------
 
# Welcome to Jiraが表示されるまで待機する
while driver.current_url != base_url + '/secure/WelcomeToJIRA.jspa':
    print("Wait...")
 
 
# ドライバを閉じて処理を終了する
driver.close()

実行結果

上記のコードを実行すると、以下のGIFアニメーションのようにWebブラウザ(Google Chrome)が開き、Jiraのセットアップが行われます。
※以下のGIFアニメーションでは、ビルトインのデータベースを使用する方法に変更しています。

ビルトインのデータベースを使用する方法

おわりに

Seleniumを利用することで、面倒なJiraのセットアップ画面を自動化することが出来ました。
なお、今回はJiraを例にしましたが、Confluence等の他のAtlassianアプリケーションも同様にSeleniumで自動化を行うことができます。
自動化にご興味ありましたら、是非お試しください。

ご不明な点がございましたら、お気軽に弊社にお問合せください。

お問い合わせ

製品について詳しくはこちらをご覧ください。

Jiraについて

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

カテゴリ一覧

最近の記事

年別アーカイブ

アトラシアン製品の導入と活用を
成功させたいなら
リックソフトのサポートが
必要です。

サードパーティ製のアドオンもサポート

サードパーティ製のアドオンもサポート

RS標準サポート

アトラシアン社ではサポート範囲外となっているサードパーティ製のアドオンをリックソフトのRS標準サポートではサポートします。

  • アトラシアン製品とサードパーティ製のアドオンとの事象の切り分け
  • 海外のアドオンベンダーとのやり取りを代行(日→英/英→日)

リックソフトのRS標準サポートは開発元が提供するサポート以上の価値があります。

サポートについて

ツールの活用を促進するアイテム

ツールの活用を促進するアイテム

各種ガイドブック

ツールを導入しただけでは成功とはいえません。利用者が効果を感じていただくことが大切です。独自で制作した各種ガイドブックはツール活用を促進します。

リックソフトからライセンス購入を頂いたお客様にはガイドブックを無料進呈いたします。

ガイドブックについて

価値あるツールの使い方

価値あるツールの使い方

研修・トレーニング

ツール操作の研修だけでなく「ウォータフォール型開発」「アジャイル型開発」のシミュレーション研修も提供。

日本随一の生産性向上にも効果のある研修サービスです。

リックソフトからライセンス購入を頂いたお客様には無料招待や割引特典がございます。

研修について