Author
持田 秀敏Hidetoshi Mochida
このエントリーは、 Atlassian(JIRA , Confluence, Trello, Bitbucket)のTips Advent Calendar 2017 - Qiitaの15日目です
こんにちは、リックソフトの持田です。
今回は Bamboo 6.0 で追加された Bamboo Specs の使い方について書きたいと思います。
Bamboo Specsとは
Bambooプランの設定全体をソースコードとして定義する機能です。
ソースコードでプランを定義して何が嬉しいのかというと、6.0以前ではプランの定義はWeb UI経由のみで、手動でプランの作成や修正をする必要がありプランの数が多いと多くの労力が必要でした。
ソースコードで定義することで、再利用可能なプラン定義の作成、パラメータ化、ループを使用して多数のプランを同時に作成といったことが可能になります。
また、ソースコードをバージョン管理システムに保存することでコードレビューや履歴管理も行えるといったメリットもあります。
必要なもの
Bamboo Specs試すには次のものが必要なので、あらかじめクライアントにインストールします。
- JDK 8 以上
- Maven 3.2 以上
また、Bamboo Specsでプランを送信する Bambooサーバー(6.0以上)もあらかじめ準備しておきます。
ステップ1:Mavenを使用してプロジェクトベースを作成する
Mavenを使用してプロジェクトのベースを作成します。作成するには次のコマンドを実行します。
[html] 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 [/html]archetypeVersion はBambooのバージョンに合わせます。
groupId、artifactId、packageは適宜修正して下さい。
コマンドを実行すると artifactId で指定した名前のディレクトリとディレクトリの中に pom.xml など必要最低限のファイルが作成されます。
ステップ2:プロジェクトをIDEにインポートする
ステップ1で作成したプロジェクトを統合開発環境(IDE)にインポートします。
ここでは次の手順で IntelliJ にインポートします。
- IntelliJを起動します
- メインメニューで「ファイル」>「Open」を選択します。
- ステップ1で作成されたディレクトリの中に存在する pom.xml を選択します。
- 「Open as Project」をクリックします。
ステップ3:プロジェクト名とプラン名を修正する
src / main / java / tutorial にベースとなる PlanSpec.java が作成されていますが、デフォルトではプロジェクト名とプラン名がそれぞれ「Project Name」「Plan Name」となっていて分かりずらいのでので修正します。
プロジェクトの設定は projectメソッドに定義されているので、次のようにプロジェクト名とプロジェクトキーを修正します。
[html] Project project() { return new Project() .name("Demo Project") .key("DEMO"); } [/html]プランの設定は createPlan メソッドに定義されています。プラン名とプロジェクトキーを修正します。
[html] Plan createPlan() { return new Plan( project(), "Demo Plan", "PLAN") .description("Plan created from (enter repository url of your plan)"); } [/html]ステップ4:Bambooサーバーへにプランを送信する
ここで一旦、プランをBambooサーバーへ送信してみます。
送信先のサーバは mainメソッドの先頭に下記のように定義されていますので、環境に合わせて修正します。
また、プランの送信にはBambooサーバーのアカウントが必要となります。
アカウントの情報はルートディレクトリの .credentials ファイルに記載します。
プランの送信は 、mvnコマンドでも実行できますが、ここではIntelliJ上で実行してみます。
- プロジェクトビューで PlanSpec クラスを右クリックします。
- メニューの「Run 'PlanSpec.main()'」をクリックします。
実行してコンソールに下記のようなメッセージが表示されれば成功です。
Publishing plan DEMO-PLAN Successfully published plan DEMO-PLAN
Bambooサーバーに移動して定義したプロジェクトとプランが表示されているか確認してみましょう。
ステップ5:ステージ、ジョブ、タスクを追加する
デフォルトで作成される 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の導入のご相談や、デモのご依頼がありましたら、下記よりお気軽にご相談ください。