NEXTSCAPE blog

株式会社ネクストスケープの社員による会社公式ブログです。ネスケラボでは、社員が日頃どのようなことに興味をもっているのか、仕事を通してどのような面白いことに取り組んでいるのかなど、会社や技術に関する情報をマイペースに紹介しています。

MENU

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

f:id:nextscape_blog:20210909222850p:plain



  • 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」を選択します。

f:id:nextscape_blog:20210909222937p:plain

「Enable alternate authentication credentials」にチェックを入れて、Password と Confirm Passwordを入力します。

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

 

2.Jenkins側の設定

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

 

f:id:nextscape_blog:20210909223015p:plain

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

Repository URL:https://{VSO

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

 

f:id:nextscape_blog:20210909223054p:plain

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

 

f:id:nextscape_blog:20210909223119p:plain

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

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

 

f:id:nextscape_blog:20210909223142p:plain

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]

f:id:nextscape_blog:20210909223215p:plain

Action

Perform this action:Trigger Git build

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

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

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

 

f:id:nextscape_blog:20210909223312p:plain

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

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

 

f:id:nextscape_blog:20210909223349p:plain

f:id:nextscape_blog:20210909223409p:plain

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