2017/12/14
Bamboo Specsを使ってみよう持田 秀敏Hidetoshi Mochida
このエントリーは、 Atlassian(JIRA , Confluence, Trello, Bitbucket)のTips Advent Calendar 2017 – Qiitaの15日目です
こんにちは、リックソフトの持田です。
今回は Bamboo 6.0 で追加された Bamboo Specs の使い方について書きたいと思います。
Bambooプランの設定全体をソースコードとして定義する機能です。
ソースコードでプランを定義して何が嬉しいのかというと、6.0以前ではプランの定義はWeb UI経由のみで、手動でプランの作成や修正をする必要がありプランの数が多いと多くの労力が必要でした。
ソースコードで定義することで、再利用可能なプラン定義の作成、パラメータ化、ループを使用して多数のプランを同時に作成といったことが可能になります。
また、ソースコードをバージョン管理システムに保存することでコードレビューや履歴管理も行えるといったメリットもあります。
Bamboo Specs試すには次のものが必要なので、あらかじめクライアントにインストールします。
また、Bamboo Specsでプランを送信する Bambooサーバー(6.0以上)もあらかじめ準備しておきます。
Mavenを使用してプロジェクトのベースを作成します。作成するには次のコマンドを実行します。
mvn archetype:generate -B \ -DarchetypeGroupId=com.atlassian.bamboo -DarchetypeArtifactId=bamboo-specs-archetype \ -DarchetypeVersion=6.2.1 \ -DgroupId=com.atlassian.bamboo -DartifactId=bamboo-specs -Dversion=1.0.0-SNAPSHOT \ -Dpackage=tutorial -Dtemplate=minimal
archetypeVersion はBambooのバージョンに合わせます。
groupId、artifactId、packageは適宜修正して下さい。
コマンドを実行すると artifactId で指定した名前のディレクトリとディレクトリの中に pom.xml など必要最低限のファイルが作成されます。
ステップ1で作成したプロジェクトを統合開発環境(IDE)にインポートします。
ここでは次の手順で IntelliJ にインポートします。
src / main / java / tutorial にベースとなる PlanSpec.java が作成されていますが、デフォルトではプロジェクト名とプラン名がそれぞれ「Project Name」「Plan Name」となっていて分かりずらいのでので修正します。
プロジェクトの設定は projectメソッドに定義されているので、次のようにプロジェクト名とプロジェクトキーを修正します。
Project project() { return new Project() .name("Demo Project") .key("DEMO"); }
プランの設定は createPlan メソッドに定義されています。プラン名とプロジェクトキーを修正します。
Plan createPlan() { return new Plan( project(), "Demo Plan", "PLAN") .description("Plan created from (enter repository url of your plan)"); }
ここで一旦、プランをBambooサーバーへ送信してみます。
送信先のサーバは mainメソッドの先頭に下記のように定義されていますので、環境に合わせて修正します。
BambooServer bambooServer = new BambooServer("http://localhost:8085");
また、プランの送信にはBambooサーバーのアカウントが必要となります。
アカウントの情報はルートディレクトリの .credentials ファイルに記載します。
プランの送信は 、mvnコマンドでも実行できますが、ここではIntelliJ上で実行してみます。
実行してコンソールに下記のようなメッセージが表示されれば成功です。
Publishing plan DEMO-PLAN Successfully published plan DEMO-PLAN
Bambooサーバーに移動して定義したプロジェクトとプランが表示されているか確認してみましょう。
デフォルトで作成される PlanSpec.java にはジョブやタスクが一切定義されていないので追加してみます。
ジョブやタスクの追加は createPlan メソッドに記載されている descriptionメソッドの後ろに追記していきます。
まずは、ステージとジョブを次のように追加します。
private Plan createPlan() { return new Plan( project(), "Demo Plan", "PLAN") .description("Plan created from (enter repository url of your plan)") .stages( new Stage("Stage 1") .jobs(new Job("Build & run", "RUN"))); }
さらに続けてタスクを次のように new Job に続けて tasks メソッドに追加したいタスクを記載します。
private Plan createPlan() { return new Plan( project(), "Demo Plan", "PLAN") .description("Plan created from (enter repository url of your plan)") .stages( new Stage("Stage 1") .jobs(new Job("Rrun", "RUN") .tasks( new ScriptTask().inlineBody("echo Hello world!")))); }
今回はスクリプトを実行できる ScriptTask を追加しています。ScriptTaskを利用することで Bambooの標準で準備されているスクリプトタスクを追加することができます。
ScriptTask の他にもソースコードをチェックアウトする VcsCheckoutTask や Mavenを実行する MavenTask などよく利用するものが用意されています。
タスクを記載したら再度Bambooサーバーにプランを送信してプランの中身を確認してみましょう。
下記のようにスクリプトタスクが定義されているはずです。
今回の記事では記載していませんが、権限やアーティファクトなどのWeb UI上で行えるプランの設定のかなりの部分をBamboo Specsで行えます。
また、Bamboo Specsへのエクスポート機能も用意されていますので、既存のWeb UIで作成したプランをエクスポートしてBamboo Specsに移行することができます。
Web UIで作成したプランがどのようなソースコードに変換されるかを確認するだけでも面白いので一度試してみてはいかがでしょうか。
Bambooについて、または価格などは下記より製品ページをご覧ください。
評価版のご要望はこちらから。
また、Bambooの導入のご相談や、デモのご依頼がありましたら、下記よりお気軽にご相談ください。
アトラシアン社ではサポート範囲外となっているサードパーティ製のアドオンをリックソフトのRS標準サポートではサポートします。
リックソフトのRS標準サポートは開発元が提供するサポート以上の価値があります。
ツールを導入しただけでは成功とはいえません。利用者が効果を感じていただくことが大切です。独自で制作した各種ガイドブックはツール活用を促進します。
リックソフトからライセンス購入を頂いたお客様にはガイドブックを無料進呈いたします。
ツール操作の研修だけでなく「ウォータフォール型開発」「アジャイル型開発」のシミュレーション研修も提供。
日本随一の生産性向上にも効果のある研修サービスです。
リックソフトからライセンス購入を頂いたお客様には無料招待や割引特典がございます。