kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Visual Studio Team Services CI/CDアドベントカレンダー:Jenkinsと連携する(22日目)

はじめに

これはVisual Studio Team Servicesアドベントカレンダー22日めの記事です。

qiita.com

以前コードレポジトリの連携でGitHubを紹介しましたが、今度はビルドの連携でJenkinsを紹介します。

Serviceを設定する

VSTSからJenkinsを呼び出すにはふた通りのやり方があります。

  • Service Hookを使う
  • Service登録する

前者のService Hookは昔からある方ですね。今は後者のServiceを登録する方を押しています。Jenkinsのビルドタスクが用意されていますが、Serviceに登録されているエンドポイントを参照します。

f:id:kkamegawa:20171222221103p:plain

New Service EndpointからJenkinsを選択します。

f:id:kkamegawa:20171222221059p:plain

URL、ユーザー、パスワードを指定して、Verifyを実行して、Connectionが成功であればOKです。

f:id:kkamegawa:20171222221100p:plain

こんな風にService EndpointにJenkinsアイコンが出ていれば問題ありません。次はビルド定義を作りましょう。

ビルド定義作成

次はビルド定義を作ります。一つ注意点として、Jenkinsでソースの取得を行うので、デフォルトのソース取得を無効にしておきましょう。大きいプロジェクトだと無駄に時間がかから無くなります。

f:id:kkamegawa:20171222224527p:plain

このDon't sync sourceをチェックしておきましょう。

f:id:kkamegawa:20171222221101p:plain

Jenkinsのビルドタスクは二つ用意されています。

  • Jenkis Queue Job
  • Jenkins Download Artifacts

前者はJenkinsに定義したビルドキューを実行する、後者はJenkinsでビルドしたArtifactsをVSTSにダウンロードするというものです。どちらがビルドよう、リリース用ということはありません。Jenkins→VSTSと行ったビルドパイプラインでもいいでしょう。

f:id:kkamegawa:20171222221102p:plain

Queue Jenkins Jobを登録して、保存すると、Jenkinsのビルドジョブが呼び出せる…はずなのですが、投入はできるものの、404エラーになってしまいました…Blue Oceanで作ったビルドパイプラインを呼び出しているだけなのですが、よくなかったのかな。

リリース定義を作る

リリース定義を作ります。artifactの取得はリリース定義からと、ビルドタスクのいずれでも可能です。

f:id:kkamegawa:20171222230701p:plain

ArtifactのソースにJenkinsを指定して、サービスとジョブを指定すればArtifactsとして使用できます。

f:id:kkamegawa:20171222221107p:plain

もしくは、ビルドタスクで明示的にJenkinsのビルドタスクから取得するように構成します。こちらを使う場合、手動でリリースキューを実行することになるでしょう。

Service HookでJenkinsを構成する

Service Hookもまだサポートされています。Service Hook からServicesの一覧にあるJenkinsを選びます。

f:id:kkamegawa:20171222221105p:plain

Triggerからレポジトリ、ブランチ、コミットした人の設定を行えば、コードがコミットされるごとにJenkinsを呼び出すことができます。

f:id:kkamegawa:20171222221106p:plain

まとめ

Jenkinsに慣れている人(私以外w)は無理にVSTSのビルド機能を使わなくてもJenkinsを使い続けても大丈夫です。

.NET CoreにしてからがJenkinsでビルドしているようですしね。