kkamegawa's weblog

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

Visual Studio Team Services CI/CDアドベントカレンダー:タスクをライブラリで再利用する(13日目)

はじめに

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

qiita.com

ビルドやリリースで使うタスクはどうしても長くなります。また、ブランチやfork先のレポジトリでビルド定義を一から作るのも大変です。そんなときのためにTask Groupsという機能があります。ちょっと使ってみましょう。

タスクグループを定義する

タスクグループの定義は簡単です。既存のビルド定義やリリース定義から作っていきます。

f:id:kkamegawa:20171213060443p:plain

このようにグループにしたいタスクを選択して、右クリック「Create Task group」をクリックします。

f:id:kkamegawa:20171213060444p:plain

ただし、注意点として、標準のタスクはプロセスごとに共通の値(*/.csproj等の値)を定義しています。リンク機能といいますが、これを指定していると、タスクグループにできません。

f:id:kkamegawa:20171213060445p:plain

このように各タスクで共通の値として設定されている項目にある、unlinkをクリックしておきます。unlink allで全部削除されます。

f:id:kkamegawa:20171213060446p:plain

リンクが解除されると、今までタスクごとに編集できなかったProject(S)の項目が編集できるようになっているのがわかります。

f:id:kkamegawa:20171213060447p:plain

タスクグループの名前でわかりやすいものをつけましょう。ビルドタスク一覧に作者の名前と一緒に表示されます。また参照しているvariableの既定の設定も行います。ここではBuildConfiguration(Release/Debugなど)の指定ができます。

f:id:kkamegawa:20171213060448p:plain

タスクグループをどのカテゴリーに追加するかという選択です。buildを選んだら、タスク追加時に選択する"build"カテゴリーに表示されます。Createボタンを押すと、現在のビルド定義の該当タスクがタスクグループでおきかえられます。

f:id:kkamegawa:20171213060449p:plain

こんな感じですね。Build configurationもグループの共通設定で可能になっています。

Task groups定義の管理

作ったタスクグループはTask groupsハブで管理できます。

f:id:kkamegawa:20171213060450p:plain

グループの名前、詳細説明(description)、定義のカテゴリーなど作るときに指定した項目が指定できます。

f:id:kkamegawa:20171213060451p:plain

一度作ったタスクグループの内容を変更したい、ということはよくあります。ここでタスクの追加や削除、使用しているタスクのバージョンアップといったことができます。ピンクの旗アイコンがタスクの横についていますが、これがタスクのバージョンアップが可能というお知らせです。ちなみに選択するとpreview版のver2が選択できます。

f:id:kkamegawa:20171213060453p:plain

新しくビルドタスクの追加もできます。

f:id:kkamegawa:20171213060452p:plain

タスクグループをバージョンアップするのはいいのですが、複数のビルド定義で参照されていると影響が…ということもあると思います。そういう時はReferencesから使用しているビルドやリリース定義の参照ができます。

とはいえ、いきなり全部のタスクをアップデートするのは怖いものです。そういうときのために、プレビュー版として公開する機能も用意されています。

f:id:kkamegawa:20171213060456p:plain

新しく同じタスクグループを参照するビルド定義を追加すると、こんなかんじでふえます。

新しいビルド定義で参照する

作ったからには当然新しいビルド定義で参照もできます。

f:id:kkamegawa:20171213060454p:plain

buildカテゴリーにタスクグループを作っているので、buid配下で探すと、作ったdotnet buildタスクがありますね。

f:id:kkamegawa:20171213060455p:plain

追加するとこんな感じです。

プレビュータスクで評価する

前述したように、いきなりビルドタスクを更新されると困ることもあります。そのような場合のために、プレビュー版を作って事前に評価してもらう仕組みがあります。

f:id:kkamegawa:20171213195831p:plain

ビルドタスクの一部を新しいバージョンに更新します。Saveではなく、Save draftで保存して、Publishをクリックします。

f:id:kkamegawa:20171213195833p:plain

Publishを実行すると、Publish as previewというチェックボックスがあるので、チェックすると、プレビュー版のタスクグループとして登録されます。

f:id:kkamegawa:20171213195834p:plain

ビルド定義でバージョンのところに2.*(preview)という選択肢が増えてますね。これでビルドできるかフィードバックをもらって、OKであれば、タスクグループを更新して、全体に反映させます。

まとめ

ビルドやリリースのタスクをグループ化できるTask groups大きな環境になると便利なので、使ってみてください