kkamegawa's weblog

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

2019年にリリースされたAzure DevOps機能の振り返り

遅れましたが、Azure DevOpsアドベントカレンダー25日目の記事です。

qiita.com

今年はAzure DevOpsSprint 146からSprint 162までリリースされましたが、この一年を振り返ってどんな一年だったかまとめてみたいと思います。

一般

Sprint 147で新しいナビゲーション(垂直方向の新UI)が全員に対して展開されました。賛否両論あったUIですが、昔のUIはもう古いTFSでしか見ることができなくなっています。使っている技術も変わっているようですね。ただし、複雑なというか、掘りつくさないといけないUIは変わっていないので、もう少し整理が必要な気はします。

Sprint 148でAzure CLIにDevOps拡張機能が公開されました。基本的に今まであったPowerShellベースのほうからこちらに移行することになるのかな?という感じです。PowerShellは.NETベースのオブジェクトモデルを使っていたので、ほかのプラットフォームでは使えませんでした。Sprint 152ではazコマンドから直接REST APIを呼べるようになったのも便利です。

Sprint 150で流行りの(?)Darkテーマがサポートされました。私は使ってないんですが、たまにみかけますね。あと、docsのサイトもOSのテーマに追従するようになっていますね。突然ダークで表示されてちょっとびっくりします。

お買い上げの方法や、GitHubでのサインインが//Buildでアナウンスされました。GitHubアカウントでのサインインはやったことないですが、裏でMSアカウントを作っているはずなので、ちょっとだけ注意ですかね。Sprint 155ではGitHubをコラボレーターとして招待できるようにもなっています。

IPアドレスが明確化されたので、Firewallで制御しやすくなりました。サインイン用のアドレスは別途必要なので、IPアドレスだけですまないのですが、よくなったと思います。

VS Subscriptionを割り当てるグループを作っておけば自動的にorganizationで展開されるという、Azure ADと連携した自動的にサービスごとのロール設定できるようになったのも大規模では便利ですね。

後全般的に言えることですが、GitHubおよび、GitHub Enterprise, BitBucketなどの外部サービスの連携も非常に強化されました。

Azure Boards

大きいのはSlackおよび、Teamsアプリの公開でしょうか。あとGitHub側にもBoardアプリの提供が開始されました。issueに慣れている人は別にいいと思うんですが、複数のレポジトリを串刺しで管理したい場合、Boardsのほうが向いているとは思います。

従来のExcelでのタスク編集も便利だったのですが、Windowsのみだったので、クロスプラットフォームをサポートするCSV取り込みも便利ですね。Azure-CLIと連携して他のツールでCSVを生成して、Azコマンドで取り込みするという連携が可能になっています。

Azure Repos

こちらもSlackTeamsアプリが公開されました。余談ですが、Slackのほうが先になるのはやはりエンジニアが使っているのはSlackのほうが多いから、という理由もあるんでしょうかね。Slack便利だし、よくできていると思います。年末にようやく一括登録のサポートが行われて助かりました。

地味ですが、非en-usというか、マルチバイト文字が一般的な地域ではエンコーディングサポートも大変助かります。

大規模な環境では複数のレポジトリのブランチポリシー設定も便利ですね。

Azure Pipelines

もう多すぎてわからないくらい機能強化されたAzure Pipelinesです。最大の拡張はYAMLパイプラインでしょうか。クラッシックのGUIエディターに追いつけ追い越せでできないことがかなりなくなってきました。昔からパイプラインの編集にWorkItemを関連づけたいというフィードバックはしていたのですが、こういう形になるとは思っても見ませんでした。競合のSaaS CIサービスはほとんどYAMLサポートしているのでこうなったのでしょうけど。

Multi-Stageの対応GitHub Actionsの対応Jiraのサポートといった連携運用も多くなりました。

そして、Kubernetisサポートもどんどん拡張されていきました。今はほぼKubernetis専用のEnvironmentsも他のサービスにも対応して欲しいですね。特にWeb AppsやVMに対応してもらえるといいなぁ。

Visual Studio 2019やUbuntu 18.04、macOSが増えた結果、Hosted Poolが増えすぎて収集がつかなくなったこともあり、一つの仮想的なHosted Poolにまとめられました。これで誰がキューに入れているか分かりやすくなったので、大規模環境では特に便利かなと思います。

Repos, Boardsと同様にPipelinesにもTeamsとSlackアプリがリリースされました。承認作業もできるようになったので、TeamsやSlackをフロントエンドにできるようになったのも大きいですね。

Pipeliesはおそらく今後ももっと強化されるでしょうけど、欲を言えばもう少しHostedの性能とか制限を緩和して欲しいかなぁという気はします。サポートされ始めましたが、PipelinesでのDockerイメージのキャッシュももっと頑張って欲しいかな。

TIPSとしてはmacOSは実機を使っているので、JavaScriptとか.NET CoreとかビルドするときはmacOSを選ぶのがいいというのは当面変わらない回避方法になるという状況は当面続くんでしょうかね。

Azure Tests

大きいというか、唯一と言ってもいい改善はTest PlansのUI更新でしょうかというか、これ以外ないような。テスト実行でいくつか改善はありましたが、それらは全部Pipelines側の改善なんですよね。

テスト実行結果をAnalytics Viewとかでよりよく見えるようになる改善は期待したいと思います。

Azure Artifacts

Public Feedの公開と容量課金への変更でしょうか。

今までは無制限でしたけど、容量課金になったことで共有の戦略を考えた方がいいですね。容量課金とは言っても、組織内で一つに集約するとかした方がいいですね。ただし、Pipelineで受け渡すためのArtifactsはこの課金の対象外だそうですので、安心してください。

Analytics

Analyticsが一般提供開始になりました

あとはほとんどWidgetの改善でしょうか。ビルドごとのレポートも大変便利ですね。こういうのもうちょっと使いこなしていきたいです。

Power BIにこういうビルド結果とかテスト結果を流したいので、もうちょっと自分でも使ってどんなことができるのか試してみたいです。前のXAMLビルドではちゃんとビルド結果をSQL Reportingに出せたので、またやりたいですね。

Wiki

mermaidがサポートされたのはちょっとびっくりでしたが、会社で使っている人がいて、確かに便利そうでした。

Boardのクエリ結果を挿入できる機能もリリースノート書くときとか便利ですよね。

Wikiの更新通知もいいですね。通知だけど、メールやWebhookの通知があるともっと良さそう。というか、SlackやTeamsへの通知もあるといいな。

Wikiの中身はGitレポジトリなので、流用できそうな気もします。

オンプレミスのAzure DevOps Server 2019

2019 Update 1.1がリリースされています。大体Sprint 159くらいまで入っているんじゃないでしょうか。上記の話は割とオンプレミスにも当てはまります。アップグレード大変だと思いますし、コード検索を毎回生成し直しも大変だと思います。この辺改善して欲しいですね。とりあえずメモリイーターだった状態は改善されたので、今後も引き続きよろしく!

総括

自分が気になったところだけをまとめてみましたけど、「こんなお気に入りの機能がある」とかありましたら是非かいてみてください。やはりどうしてもPipelinesに偏ってしまう傾向があると思いますが、いろいろ使い出があるサービスなので、是非活用して開発効率を改善してみてください。

来年も楽しんでHappy Coding!

Azure DevOpsのサポートを受ける方法いろいろ

これはAzure DevOps アドベントカレンダー16日目の記事です。

qiita.com

Azure DevOpsのサポート受ける方法がわからないという声をたまに聴くので、ちょっとまとめてみます。Azure DevOpsのサポートは有償、無償、MSがやっているもの、コミュニティと複数のパスがあります。

コミュニティ

いつものリリースノートにも書かれていますが、Stack Overflow, MSDN forum(こちらはもうすぐMicrosoft Q&Aになるそうですが)があります。バグなどはVisual Studio Communityへ。

stackoverflow.com

製品担当者の人も回答しているようです。ただし英語だけ。

まだプレビューですが、MSDN / Technet ForumからMicrosoft Q&Aに移行するらしいです。

docs.microsoft.com

docs.microsoft.com

Azure DevOpsはまだないようですが、それよりもVisual Studio Communityのほうがいいようです。

developercommunity.visualstudio.com

オンプレミスとサービスで場所が違うので気を付けて。こちらも公式は英語です。たまに日本語などの英語以外も見かけますが、機械翻訳で認識されるかもしれないので、できれば英語がおすすめです。Azure DevOpsなどのReport Bug機能で通知してもいいですね。

公式サポート

MS自身が提供する公式サポートです。

https://azure.microsoft.com/ja-jp/support/devops/azure.microsoft.com

f:id:kkamegawa:20191212053516p:plain

サポートポータル。Virtual AgentはQ&Aを探す、チケットを発行する、リージョンの移動をするといったことがインタラクティブにできます。

f:id:kkamegawa:20191212053526p:plain

Basic / Premire / 課金のサポートがあります。Basicは管理者でもログインできなくなったときとかのやり取りで使えるはずです。昔はリージョン移動もこれでできたのですが、今はチャットボットがあるのでそちらを使ったほうがいいでしょう。

オンプレミスのAzure DevOpsを使っている場合、真ん中のPremireを使う必要があるようです。

f:id:kkamegawa:20191212053532p:plain

チャットボットです。これ使えばorganizationのリージョン移動が可能です。リージョン移動については以前書きましたので、そちらを参考にしてください。

kkamegawa.hatenablog.jp

二つほど移行してみましたが、移行期間は結構長い間とっておかないと失敗が続いてずるずる伸びてしまいます。

f:id:kkamegawa:20191212053521p:plain

最後はAzureポータルから。こちらはサポート契約しているサブスクリプションがあればそのままポータルからサポートリクエストの発行ができます。

CSP契約などでポータルから直接発行できない場合はCSP窓口にサポート発行する手段があるはずなので、そちらでどうぞ。

Ignite Tour Tokyo 2019でお話したAzure DevOpsのセキュリティベストプラクティス2019

はじめに

これはAzure DevOpsアドベントカレンダー2019 9日目の記事です。

qiita.com

Ignite The Tour Tokyo 2019でAzure DevOpsを運用する際のセキュリティについてお話してきました。資料はまだ公開されていないのですが、そのうち公開されるはずです。

www.microsoft.com

録画は公開されないと聞いています。会場の都合やスライド見えるようにということで、あまりきつきつにせず、喋りで結構補ったので、参考URLも見てください。

それでも会場ではスライドの下の部分が見えなかったという声をいただいています。すいません…。

Azure DevOpsのセキュリティはAzure ADで運用するとき、結構高度な機能が使えるようになります(お金もかかります)。お金かかるポイントがそれなりにあるので、あらかじめ決めておく必要があります。

Azure ADとAzure DevOps

Azure DevOpsはAzure ADベースで作ることができます。ある程度の組織で使っていて、IDの統合管理するならば、MSアカウントではなく、Azure ADベースにするのがおすすめです。

Office 365あればそのAzure ADを使うのがいいでしょう。ただし、お客さまに提供するSIの環境であれば相手方に作ってもらったほうがいいです。

kkamegawa.hatenablog.jp

この例ではB2Bで作ってお互いがゲスト参加ですがこれで作るったケースでいいところはAzure AD消せば全部消えてしまうところですね。

ただし、Teamsを使う場合、TeamsのBoardsアプリは使えるのですが、タブに統合はできませんので、注意してください。

あと、Azure ADを別に立てて、B2Bで入るとき、管理0だと所属元のIT部門がたいていいい顔しません。開発したいから作っているだけなので、あまり高度なことはやりたくないんですね。それもわかりますが、抜け穴作っていると思われるとお互いいいことないので、そこは注意しましょう。

権限について

Azure ADのグループとAzure DevOpsのローカルで使うAzure DevOpsグループの二種類あります。基本的なおすすめはAzure DevOpsグループです。

Azure ADのグループは規定値で50万という上限がある(MSに言えば増やせます)のと、業務単位やOffice 365でもどかどかグループ作ることになるので、結構大変です。

基本的にはライセンス周りや、Azure ADのセキュリティに依存するところをAzure ADグループにしたほうがいいでしょう。

Azure DevOpsを作っているサブスクリプションの権限は制限しますが、デプロイ先のサブスクリプションはプロジェクトごとに管理も可能です。

これをどうやって管理するかいろいろ方法はありますが、サブスクリプション単位でチームプロジェクトを分割する、というのも一つの方法です。

Organization 管理

公開される資料では"Organization作成を止める権限はない"と書いていますが、12/6付でAzure ADにOrganization作成権限を設定できるようになりました。

f:id:kkamegawa:20191208220249p:plain

devblogs.microsoft.com

危ないですね。これだからクラウドサービスは(笑)。

ほかに大きいところでは、Azure ADのゲストユーザー自身を秘匿したい、ですね。Organization 内ではユーザーの検索ができてしまうので、検索で出てきては困るという場合、分割します。

接続経路

Express RouteかPublic Internetかです。Azure AD P1の条件付きアクセスポリシーは高いので買えないけど、どうしてもFirewallで頑張りたいというときはIPアドレスが明示されているので、ここを使ってください。

docs.microsoft.com

前は「Azureのサービスですよ」としか明示されていなかったので、大きく変わりました。

グループ管理について

所属グループとかつい作りたがるのですが、混乱するのでお勧めしません。プロダクトチーム、ロール単位(コードレビュー、ビルドAdmin、レポジトリ管理者、etc)といった、役割でのチームをまず検討してみてください。

わんくま大阪でAzure DevOpsとIDとセキュリティ管理についてお話してきました

以前Azure DevOpsとセキュリティという形でお話したのですが、今回はもうちょっとAzure ADに振った話にしてみました。これしゃべるためにAzure AD P2(正確にはEnterprise Mobility E5)買ってみました。やっぱりあると便利ですね。

実はこれ、もうちょっと先にあるイベントの練習というか、45分でどれだけしゃべれるかなということを知るためにこの分量にしてみたんですが、やっぱりちょっと多いですね。最後のオンプレミス版Azure DevOps Serverの内容は時間が足りなかったときのおまけとして用意していたんですが、入れていると時間が足りなかった。

話していて、いくつかアイディアは浮かんだので、構成は少し変えるのですが、中身はおおむねこんな感じでやる予定です。