kkamegawa's weblog

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

Azure DevOps 2019/4/8の更新

Azure DevOps Sprint 150のリリースノートの翻訳を行いました。オリジナルはこちらから読んでください。

docs.microsoft.com

Wikiページの更新通知はいいですね。欲を言えばSlack, TeamsなどへのService Hookがサポートされていればもっとよかったと思います。多分もう要望として登録されているような気がしますが。

作業項目の開始日付ベースのクエリは今まで苦労してやってたので、非常に助かります。

Pull requestの新しいポリシーFast-Forwardd merging とSemi-Linear merging も嬉しい人多いと思います。

YAML編集のTask AssistantもGUI編集とYAMLのいいとこ取りでいいですね。YAMLに移行したいけど、タスク編集が辛い…という人(私)には助かります。私も最近ぼちぼちYAMLへ移行を始めました。

Analyticsも一般公開になり、既存の拡張機能は廃止になりますので、気をつけてください。

ではまた三週間後。

ranslate to Japanese to Azure DevOps release notes ...

Packerで独自のAzure DevOpsビルドエージェントを作る

Microsoftが提供するMicrosoft hostedエージェントは便利なのですが、性能(2コア)やディスクが足りない(上限10GB)、などの理由で独自エージェントを立てたいという理由はよくあります。

OSに一からVSなどを入れるのは少々めんどくさいです。そんなときのためにMicrosoftからMicrosoft Hosted agentと同じエージェントを作るための仕組みが提供されています。

github.com

PowerShell DSCではなく、Packerで作ります。LinuxやmacOSもサポートしないといけないからでしょう。

GitHubのリリースのページから作りたいイメージをダウンロードします…といっても、同じバージョン(M150等)であれば、どれを選んでも中身は一緒です。レポジトリをgit cloneして固めてるだけなので。

今回はVS2019 on Windows Server 2019を選びます。

  • 展開したファイルのazure-pipelines-image-generation-vs2019-150.1\images\winフォルダを開きます。
  • vs2019-Server2019-Azure.json というファイルがテンプレートファイルです。このファイルから一か所変更します。
  "install_password": null

となっています。ここもほかの値と同様に外だしの変数として取得するようにします。

  "install_password":  "{{env `ARM_PASSWORD`}}"

次にPackerで使用するclient_id, client_secret, subscription_id, tenant_id, object_idを取得します。とはいっても難しいことはなくて、Azureのドキュメントで解説されているので、ここにあるPowerShellスクリプトを動かすだけです。

docs.microsoft.com

Visual Studio 2017を入れてしまっている人は、アプリと機能から"Microsoft Azure PowerShell - April 2018"を削除して、AZモジュールを使ってください。ドキュメントは今Azモジュール前提で書かれています。

  • Connect-AzAccount
  • リソースグループ作成
  • 資格情報の作成

ここまでは上のドキュメントにも載っています。次、このスクリプトを実行するためにはリソースグループと同じリージョンにストレージアカウントが必要です。PackerそのものはManaged Diskをサポートしているようですが、このAzure DevOpsエージェントを作るjsonはストレージアカウント前提です。

この辺の値が取れたら、必要な値を別のjsonに書いて、packerを実行します。

{
   "client_id": "ないしょ",
   "client_secret": "ないしょ",
   "tenant_id": "ないしょ",
   "subscription_id": "ないしょ",
   "object_id": "ないしょ",
   "location": "Japan East",
   "resource_group": "リソースグループ名",
   "storage_account": "ストレージアカウント名",
   "install_password": "パスワード"
}
packer  build -var-file=作ったjson vs2019-Server2019-Azure.json

これでひたすら待ちます。私はVSのインストールが無応答状態になって、結局諦めたんですが、たぶんこのjsonをそのまま使ったら少なくとも6-7時間はかかると思います。サーバーなどの起動しっぱなしマシンでやるのがいいと思います。

このテンプレートから必要ない古いコンポーネントを削除するとか、逆に必要なDockerイメージをキャッシュしておくとか、カスタマイズはいろいろできると思います。

一度ゴールデンイメージができたら、あとはsysprep済みのVMイメージがストレージアカウントに入っているので、VMとして起動するとか、もしくはダウンロードしてローカルのHyper-Vにマウントしてしまうとか、いろいろ方法はあると思います。

Azure DevOps Server/TFS接続時にTF30063もしくはVS30063が出る場合の対処

新しいビルドエージェントを用意して、ビルドエージェントを構築しようとすると、URLと認証を入れたところでVS30063エラー。Visual StudioもTF30063エラー(実態は同じく認証エラー)。こちらにあるように、環境変数VSTS_AGENT_HTTPTRACE=trueを指定すればログが出ますが、やっぱりHTTP ERROR 401ということしかわからない。

いろいろ悩んだ挙句、結局のところAzure DevOps Serverの実行アカウントがActive Directoryユーザでも、NETWORK SERVICEでもなかったことが原因でした。考えてみたらそうですよね。ローカルアカウントにしていたそもそもの原因はAzure DevOpsのバックアップ検証でエラーになってしまっていたからでした。

組織内だと、サービス用にADアカウントを払い出してもらうとかはちょっと厳しいので、こうなってしまっていました。Azure DevOps ServerでAD内のユーザーが検索できなかったとか、アカウントの同期エラーが出ていたとか、思い当たる現象らしきものはいくらでもありました。

教訓:AD環境で動かしているなら、ちゃんとADユーザー使いましょう

Azure DevOps 2019/3/19の更新

遅くなりましたが、Azure DevOps Sprint 149のリリースノートの翻訳を行いました。オリジナルはこちらから読んでください。

docs.microsoft.com

今回も引き続きパイプラインの更新が多いですね。CTestとかPHPUnitをサポートしたのは使っている人にはうれしいと思います。

Slackのサポートも強化されていますね。TeamsではなくSlackの強化が続いているというのはやはり開発者ユーザー数の差なんでしょうかね。

ではまた三週間後。

Translate to Japanese to Azure DevOps release note ...