Visual Studio Online+JenkinsでCI環境

こんにちは、上坂です。

Visual Studio Onlineをリポジトリとして活用したCI環境を構築してみました。
Visual Studio Onlineというと、その名前から受けるイメージのためか、Monacoというブラウザで動く開発環境がどうしても印象が強いのではないかと思うのですが、Visual Studio OnlineはTFSやGitのリポジトリもあるし、ScrumのPBIの管理も、カンバンによる進捗管理もあります。さらにビルドもテストも稼働させることができる言わばチーム開発環境であるわけですが、困ったことにビルドとテストは処理時間分の従量課金なのです。

コミットする度にビルド&テストしているように設定しておくと、なかなかびっくりするぐらいの課金額になります。ここさえ従量課金じゃなければ・・・と、思っていたのですがじゃあ単純にその部分を外部に立てたJenkinsサーバーに任せてしまえばいい!ということで実際にやってみました。(気づくの遅い・・・)
ちなみにVisual Studio OnlineのGitリポジトリはちゃんとPullRequestが使えますので、それだけでも採用検討の価値があると思います。

以下が手順です。

「前提」

  • JenkinsサーバーはWindowsサーバーをAzureVMで立ててあります。
  • Jenkinsサーバーには次のプラグインを導入済みです。
  • Git plugin
  • MSBuild Plugin

※以下のようにMSBuild の設定をしておきます。

「Jenkinsの管理」⇒「システムの設定」⇒MSBuildを選択します。
Name:v4.0.30319
Path to MSBuild:C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

MSBuild設定

  • Jenkinsアクセス時にはID/PWによる認証をかけてあります。(この設定は必須です)
  • Visual Studio Onlineに既にGitリポジトリは「GitProject」という名前で立ててあります。
  • ローカルリポジトリにClone済みで、VisualStudioのチームエクスプローラーで接続してあります。

今回はVSOnlineのGitリポジトリににソースコミットしたらJenkinsでビルドが走るようにしてみたいと思います。


1.Visual Studio Online で代替認証を設定

JenkinsからVisual Studio Onlineのリポジトリにアクセスする時の認証をID/PWで可能にするための設定です。
名前をクリック⇒Securityタブをクリック⇒メニューから「Alternate authentication credentials」を選択します。

VSOnline代替認証設定
「Enable alternate authentication credentials」にチェックを入れて、Password と Confirm Passwordを入力します。

※ここでは手抜きで何も入力していませんが、セキュリティを高めるためにuser name(secondary)は極力セットするようにして下さい。

2.Jenkins側の設定

①ジョブを作成
今回は「VSOnlineJob」という名前で作成しました。


Jenkinsジョブ作成

②.SCMでGitを選択し、以下のように設定

Repository URL:https://{VSO account}.visualstudio.com/DefaultCollection/_git/{team project}
Credentials:手順1で設定した代替認証のID/PWをセット


Jenkinsリポジトリ設定

③MSBuildでソリューションファイルを指定
ジョブ内の「ビルド手順の追加」をクリックし、「Build a Visual Studio project or solution using MSBuild」を選択します。


ジョブ内MSBuild作成

現れたMSBuildの領域で次のように指定します。

MSBuild Version:手順「前提」で設定した、登録済みのMSBuild情報の名前です。
MSBuild Build File:Visual Studio Onlineのリポジトリから取得したソリューションファイルを指定します。
Command Line Arguments:ここではリリースのリビルドを指定


ジョブ内MSBUild設定

3.Visual Studio OnlineのServiceHooksでJenkinsを追加

次のように設定します。

Trigger

Trigger on this type of event:code pushed

Repository:手順2で作ったプロジェクトを選択

Branch:master

Pushed by a member of group:[Any]


VSOnlineトリガー設定

Action

Perform this action:Trigger Git build

Jenkins base URL:JenkinsVMサーバーのURL。エンドポイント公開をお忘れなく。

User name:Jenkinsアクセスユーザー名

User API token(or password):Jenkinsアクセスパスワード

VSOnlineアクション設定

Jenkinsにアクセスするユーザーとパスワードは必須入力項目なので、「前提」でID/PWによる認証が必須なんです。そもそもセキュリティかけない方が危ないですしね。

準備終了!Visual Studio で編集したファイルをコミット&プッシュすると、Jenkinsが自動的にソースを取得してビルドしてくれるはずです。


Jenkinsビルド実行中
Jenkinsビルド正常終了

無事に成功しました!やってみると思ったよりも簡単にセットアップできました。後はテストとデプロイを仕込めば完璧ですが、ここまでできていれば後の道のりはそこまで険しくありませんよね。


ネクストスケープ企業サイトへ

NEXTSCAPE

検索する

タグ

メタデータ

投稿のRSS