kkamegawa's weblog

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

大きな組織において、Visual Studio Team ServicesをAzure ADベースで使いたい

Visual Studio Team Services(以下VSTS)には二種類の認証方法があります。MSアカウントとAzure ADです。MSアカウントは原則個人向け、Azure ADは会社などで使う場合に向いています。

どちらを選んでもVSTS自身の機能差はありませんが、Azure ADを選ぶと、Office 365との連携が便利になる場合が多いです。例えば、Teamsとの統合やAzure ADのグループをそのままVSTSのグループとして扱える、という点ですね。

Azure AD側で「xxPJ開発チーム」というグループを作って、VSTSのチームプロジェクトにできると管理が一元化されて便利です。

さて、そんなAzure ADですが、Office 365の認証基盤でもあるため、先にOffice 365を導入しているところも多いと思います。そうなると、VSTSもOffice 365のAzure ADで認証させたい、と思う方も多いと思います。

しかし、たいていの大きな会社ではOffice 365を管理している部門と、開発者は別というか、非常に遠い。そして、VSTSなんか入れてなんかあったら困る、という問題もあります。

f:id:kkamegawa:20180525063818p:plain

特にこんな風に外部のパートナーさんに追加してほしい場合、Office 365のライセンスを発行するというのは費用面やアカウント管理としても面倒です。Office 365を使っていないとしても、Azure ADのP1やP2であればユーザーごとに結構な費用がかかります。

私も困っていたのですが、そんな時はこうすればいいんじゃないか、という話を教えてもらいました。

f:id:kkamegawa:20180525063819p:plain

  1. 新規にAzure ADを用意する。Azure ADそのものは無償で作れます。
  2. そのAzure ADのテナントにVSTSを作る(まだ無償)
  3. Azure AD B2Bで新規に作ったVSTS用Azure ADに参加する。
  4. パートナーさんがいる場合も、パートナーさんのAzure ADのユーザーをB2Bで追加する。

重要なのは必ずB2Bで参加するという点で、VSTS用のAzure ADでユーザーを作らないということです。仮に作ってしまうと、パートナーさんが自分たちのAzure ADを作った、もしくは持っている場合、パートナーさんのユーザー管理や認証がややこしくなります。

Azure AD B2Bを使うとき、セキュリティ的な問題で多要素認証を使いたい場合、有料のBASIC, P1, P2が必要になります。しかし、そんなときでもあくまでもVSTS用のAzure ADサブスクリプションにかかるので、所属会社への費用は発生せず、お金的にも分離が可能ですね。

azure.microsoft.com

Team Foundation Serverの時代にWorkgroupでサーバーのユーザーで管理していた癖で、VSTS用のAzure ADにユーザーを登録したくなるかもしれませんが、絶対にやめたほうがいいでしょう。

仮にこれがSIの受託開発だった場合も大して変わりません。最終的にAzure ADおよび、VSTSの所有者をお客さんに変更すればそれが納品物、もしくは環境の移管ということになります。実際にそういうことをやられている方もいるようです。

Visual Studio 2017でMStestが実行できない場合の対処(System.Runtime, Version=4.1.1.0または依存関係の1つが読み込めないエラー)

二日ほどドはまりしました。Visual Studio 2017(15.7.1)でフル .NETでプログラムを作っていたのですが、ある日からMSTestを使ったUnit testの実行時こんなエラーが出るようになりました。

実行プログラム 'executor://mstestadapter/v2' の呼び出し中に例外が発生しました: 
ファイルまたはアセンブリ 'System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'、
またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

ターゲットフレームワークを 4.5から4.7.2までいろいろ変えても駄目。どうもNuGetからライブラリーを追加してからのようで、プロジェクトテンプレートから作ったような足し算するような素のプロジェクトでは起きません。

csprojの 方法: 自動バインディング リダイレクトを有効/無効にする | Microsoft Docsを無効にするという方法も駄目。探しまくったら対処方法がありました。

github.com

  • MSTestのプロジェクトテンプレートに追加されているMicrosoft.VisualStudio.TestPlatform.TestFrameworkと同Extensionsを削除する
  • 代わりに参照からC:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll" を追加する

「単体テストを作る」から作ったMSTestの参照状態。

f:id:kkamegawa:20180516142712p:plain

この状態だと実行できないですが、Microsoft.VisualStudio.TestPlatform.TestFrameworkで始まるアセンブリを二つ消して、前述のC:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dllを追加します。

こんな感じになっていれば実行できるはずです。少なくとも私は大丈夫でした。

f:id:kkamegawa:20180516142521p:plain

Visual Studio Team Services 2018/5/7の更新

Visual Studio Team Services のSprint 134リリースノートの翻訳を行いました。オリジナルはこちらから読んでください。

docs.microsoft.com

今回の目玉としてはDevOpsプロジェクトの強化でAKS(Azure Kubernetes Services)、SQL Databaseを簡単に追加、Helmのサポート、刷新されたTestハブといったあたりでしょうか。

もちろんPython, Ruby, JDK 10のサポートもうれしい機能の1つですね。Hosted Agentにキャッシュされるとのことなので、毎回ダウンロードする必要もないようです。

Wikiのリンク切れ検出は前あったような気もしますが…それでもこういう機能があるとリンク切れーとかいうissue立てられなくてよくなるのでストレスが少なくなります。

ではまた三週間後。

Translate to Japanese to VSTS release notes from h ...

Visual Studio Team Services 2018/4/16の更新

Visual Studio Team Services 2018/4/16 Sprint 133のリリースノートの翻訳を行いました。オリジナルはこちらから読んでください。

docs.microsoft.com

三週間後と思っていたのに、前回が四週間開けたから短くなったんですかね。今回の目玉としてはAzure Database for MySQLへの継続的デプロイ、Ruby on Railsのサポート、Azure DevOpsプロジェクトでのGolang, Rubyのサポート、NuGetのアップストリームを過去のフィードにも適用可能になるといったあたりでしょうか。

細かいですけど、特殊文字を含む検索の改善もうれしいですね。

ではまた三週間後。

Translate to Japanese to VSTS release notes from h ...