はじめに
これはVisual Studio Team Servicesアドベントカレンダー22日めの記事です。
以前コードレポジトリの連携でGitHubを紹介しましたが、今度はビルドの連携でJenkinsを紹介します。
Serviceを設定する
VSTSからJenkinsを呼び出すにはふた通りのやり方があります。
- Service Hookを使う
- Service登録する
前者のService Hookは昔からある方ですね。今は後者のServiceを登録する方を押しています。Jenkinsのビルドタスクが用意されていますが、Serviceに登録されているエンドポイントを参照します。
New Service EndpointからJenkinsを選択します。
URL、ユーザー、パスワードを指定して、Verifyを実行して、Connectionが成功であればOKです。
こんな風にService EndpointにJenkinsアイコンが出ていれば問題ありません。次はビルド定義を作りましょう。
ビルド定義作成
次はビルド定義を作ります。一つ注意点として、Jenkinsでソースの取得を行うので、デフォルトのソース取得を無効にしておきましょう。大きいプロジェクトだと無駄に時間がかから無くなります。
このDon't sync sourceをチェックしておきましょう。
Jenkinsのビルドタスクは二つ用意されています。
- Jenkis Queue Job
- Jenkins Download Artifacts
前者はJenkinsに定義したビルドキューを実行する、後者はJenkinsでビルドしたArtifactsをVSTSにダウンロードするというものです。どちらがビルドよう、リリース用ということはありません。Jenkins→VSTSと行ったビルドパイプラインでもいいでしょう。
Queue Jenkins Jobを登録して、保存すると、Jenkinsのビルドジョブが呼び出せる…はずなのですが、投入はできるものの、404エラーになってしまいました…Blue Oceanで作ったビルドパイプラインを呼び出しているだけなのですが、よくなかったのかな。
リリース定義を作る
リリース定義を作ります。artifactの取得はリリース定義からと、ビルドタスクのいずれでも可能です。
ArtifactのソースにJenkinsを指定して、サービスとジョブを指定すればArtifactsとして使用できます。
もしくは、ビルドタスクで明示的にJenkinsのビルドタスクから取得するように構成します。こちらを使う場合、手動でリリースキューを実行することになるでしょう。
Service HookでJenkinsを構成する
Service Hookもまだサポートされています。Service Hook からServicesの一覧にあるJenkinsを選びます。
Triggerからレポジトリ、ブランチ、コミットした人の設定を行えば、コードがコミットされるごとにJenkinsを呼び出すことができます。
まとめ
Jenkinsに慣れている人(私以外w)は無理にVSTSのビルド機能を使わなくてもJenkinsを使い続けても大丈夫です。
.NET CoreにしてからがJenkinsでビルドしているようですしね。