.NETで作る!

.NETに関するあれこれ(C#、VB.NET)

Backlog(Git)とJenkins(MSBuild)を連携させ、自動ビルドさせる

BacklogにあるGitリポジトリとJenkinsを連携させ、CIってのをやってみたいと思います。

環境

Windows 7 64bit

Jenkinsのインストール

まずはこちらのサイトからJenkinsをダウンロード、インストールしましょう。

jenkins-ci.org

IISも不要で、特に悩む点もありません。*1

インストールが終われば、

http://localhost:8080/

で起動できます。

Jenkinsの設定-アドイン

「Jenkinsの管理>プラグインの管理>利用可能タブ」からアドインを追加しましょう。

  • MS Build
  • Git Plugin
  • GIT client plugin*2
  • Backlog plugin

強制的にJenkinsを再起動したい場合は

http://localhost:8080/safeRestart

このページで実行できます。

Jenkinsの設定-システムの設定

「Jenkinsの管理>システムの設定」でGit、MSBuildの設定をしましょう。

Git

Name : Default
Path : C:\Program Files (x86)\Git\cmd\git.exe

名前は何でも可。あまり適切なものも思い浮かばないので初期値でいいでしょう。

Pathにgit.exeへのフルパスを指定。利用するPCによっては上述とパスが異なるかもしれませんのでご注意。 なお、git.exeがない場合は

msysgit.github.io

こちらからインストールしてください。その際は、「Run Git from the Windows Command Prompt」でインストールします。

MS Build

Name : v4.0.30319
Path : C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

C:\Windows\Microsoft.NET\Framework あたりにあるMSBuild.exe のパスを指定します。.NETのバージョンによってパスが異なりますので、必要に応じて用意してください。

パスにEXEへのフルパスを指定すると

マスター上のC:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exeはディレクトリではありません(スレーブにはあるかもしれません)。

という警告が出ますが、無視。(ディレクトリC:\Windows\Microsoft.NET\Framework\v4.0.30319を指定しても動きませんので)

ジョブ

設定ができたらBacklogのリポジトリからFetchしてビルドするジョブを作ります。

「新規ジョブ作成」から

ジョブ名 : Backlog
フリースタイル・プロジェクトのビルド

を設定し、「OK」を押下。(ジョブ名は任意の名称でOK)

ジョブ全体

Backlogのチェックボックスがあるので、チェックし、以下のように設定。

Backlog URL : https://*****.backlog.jp/projects/*****
ユーザーID : *******
パスワード : *******

個人のIDより、Jenkinsというユーザーを作った方がよさげかな。

ソースコード管理

Gitにチェックを付けて以下のように設定。

Repository URL : https://*****.backlog.jp/git/*****/******.git

CredentialsにはBacklogのID/Passwordを設定。

f:id:mk3008net:20150329122835p:plain

Reporitory URL 入力直後はエラー出ますが、認証失敗エラーなので無視してCredentialsの設定へ進んでください。 Credentials の設定が終わってもエラーが出ている場合は何かがおかしいです。

ビルドトリガ(任意)

本当はBacklogのWebHookと連携さ世帯ところですが、グローバルIPなんざ持っていませんので、定期的にこちらからBacklog(Git)を見に行くこととします。

「定期的に実行」にチェックを付けてスケジュールは以下のように設定。

# 分 時 日 月 曜
H/15 9-18 * * *

#分 (0-59)
#時 (0-23)
#日 (1-31)
#月 (1-12)
#曜日 (0-7) 0と7は日曜日

上記は「9-18時の間、15分置きに実行する」という意味になります。詳細は同入力欄右にある「?」ボタンをクリックするとよいでしょう。

正しく設定できれば、同テキストボックス下に

前回は2015年3月29日 11時58分51秒 JSTに起動しました。次は2015年3月29日 12時13分51秒 JSTに起動します。

のように具体的なスケジュールが表示されます。

ビルド

以下のように設定します。

MSBuild Version : v4.0.30319
MSBuild Build File : C:\Program Files (x86)\Jenkins\jobs\(ジョブ名)\workspace\****.sln
Command Line Arguments : /t:Rebuild /p:Configuration=Release

引数については

.NETビルド・エンジン「MSBuild」使いこなし術 − @IT

などを参考にしてください。

ビルド後の処理

Backlogを使っていますので、「Backlogに稼働登録」を追加しておきましょう。

f:id:mk3008net:20150329122845p:plain

設定すると、ビルドが失敗した(もしくは不安定になった)際に、指定したBacklogのプロジェクトに課題が登録されます。 成功から失敗に変わった最初の一回だけ、課題が登録されます。 登録される課題の優先度は、失敗時には"高"、不安定時には"中"で登録されます。

ユーザID/パスワードは、上部(Backlog URLと同じ箇所)で設定した値が使用されます

今後について

単体テスト、成果物の保管など、いろいろと自動化できそうですが、それはまたの機会に。

*1:インストールパスをDドライブにしたらインストール中に An Error occurred while attempting to create the directory: D:\Program Files(x86) 」エラーが出て停止。

setup.exe を管理者として実行したら、今度は Service 'Jenkins' (Jenkins) failed to start. Verify that you have sufficient privileges to start system services.」 エラーが出て停止。

あきらめてインストール先はCのままにしました。

*2:Git Plugin選択したら自動でインストールされるかも

. .