仕様や画面は現行バージョンと異なる可能性があります。
Backlogの最新版についてはこちらからご確認ください。
はじめまして。ヌーラボの中村です。
今日は、みんな大好きJenkinsとBacklogの連携についてお話します。
概要
JenkinsにはBacklog Pluginがあり、Jenkins上からBacklogの課題キーにリンクをはったり、Backlogのユーザ情報を用いて認証を行ったりすることができます。今回、Jenkins上で生成したファイルをBacklogに転送できるように拡張したので、この機能について紹介します。
いくつか活用のアイデアがあると思いますが、ここではドキュメント生成ツールSphinxと組み合わせた例を紹介します。以下がイメージ図です。
- ローカルPCからファイルをコミット
- Jenkinsがコミットされたファイルをチェックアウト/更新
- Sphinxを起動してHTMLファイルを生成
- 生成されたHTMLファイルをBacklogのファイル共有に転送(新機能)
- ローカルPCでファイル共有上のHTMLファイルを参照
この構成の利点は、Jenkinsを外に公開しておく必要がないということです。
CloudBeesのようなサービスを使っていたり、Jenkinsを外部に公開するよう設定しているならばJenkinsを直接参照すればいいので問題ありませんが、そこまでやれておらず社内で閉じた環境でJenkinsを運用しているところもあるでしょう。
ですが(ASP版の)Backlogを使っている場合は、必然的にネットが繋がっている場所からならばどこからでもアクセスできます。Jenkinsにはエンジニアのみがアクセスできる環境でも、エンジニアとユーザがBacklog上でやり取りをしているならば、Backlogのファイル共有にアクセスすればユーザはいつでも最新の成果物を確認できるようになります。
Jenkinsの設定
まずは、保存先のBacklogプロジェクトと、その際のユーザ/パスワードを指定します。ここはBacklogプラグインを使用したことがある方は、以前の設定のままで大丈夫です。
注意点として、Backlog URLではスペースまで含んだURLか、スペース+プロジェクト名まで含んだURL双方を指定できるのですが、ここではプロジェクト名まで指定する必要があります。プロジェクトまで指定しないと、どのプロジェクトのファイル共有にファイルを保存していいかが判断できないためです。
続いて、「ビルド後の処理」でファイル共有に関する設定を行います。ヘルプに基本的な説明は記載しているので、ここでは補足事項だけ簡単に説明します。なお、説明用に「高度な説明」は開いた状態でキャプチャしています。
ファイルを保存する際の方針として、以下の2つが考えられます。
- 最新ビルドで生成されたファイルのみ保存
- 各ビルドごとにファイルを保存
前者はあまり考えることがありませんが、念の為に「ファイルを追加する前にディレクトリを削除」しておくとよいでしょう。後者については、「…に日付フォーマットを含む」をチェックしておきます。合わせて「リモートディレクトリ」に”yyyyMMdd”などの日付フォーマット、またはJenkinsから付与される環境変数”${BUILD_NUMBER}”で表されるビルド番号を埋め込むことによって実現します。
「除去するprefix」と「…に日付フォーマットを含む」がちょっと分かりづらいので、何回か試してみて意図する結果となるかどうか確認するとよいでしょう。
結果確認
上記の設定をした後に、何度かビルドしてみた結果は以下のようになります。ビルド番号と日付フォーマットを指定しているので、各ビルドごとに異なるディレクトリが作成されています。
ディレクトリの中には、Sphinxで生成されたHTMLファイルが保存されています。HTMLファイルへのリンクから内容を直接参照することができます。
最後に
今回はSphinxの例を取り上げましたが、他にもいろいろ活用例はあるかと思います。
例えば、Jenkins上でビルドしたAndroidアプリケーションを常にBacklog上にあげておけば、ユーザはいつでも最新のアプリケーションで確認できるようになりますね(実際に確認していないので、本当にできるかは分かりませんが)。
なお、この機能に限らずJenkins Backlog Pluginの不具体対応や要望は随時受け付けております。何かご意見がある場合は、ぜひご連絡ください。
こちらもオススメ:
プロジェクト管理とは?目的や項目、管理手法について徹底解説! | Backlogブログ
プロジェクト管理の基本や主な項目を紹介。CCPMやWBSなどのプロジェクト管理の代表的な手法やプロジェクト管理全体の流れを解説。これからプロ…
backlog.com