Azure DevOps 2021/9/28の更新

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

docs.microsoft.com

今回はほぼDelivery Plansの強化ですね。一部の人にとてもありがたいのはテナント切り替えが非同期化したことにより、見かけ上失敗したように見えることがなくなったことでしょうか。

Delivery Plansでタグに色が付けられるようになったのはいいですね。あと、boolean型のフィールドに対してフィルタリングできるのも便利です。例えば、インフラなのか、アプリなのかとかの区別に使うとか、外部に影響があるものか内部で完結するものかといった用途にも使えそうです。

そういえばwork itemのタイトルつかなかったですね。これは助かります。依存関係で問題がないWork Itemに緑アイコンがつくのも便利でいいですね。

macos-latestラベルが付いたパイプラインは11/3ごろにMacOS 11.5 Big Surへ移行するそうです。10.15でなければならい人は早めにプールのラベルを書き換えておきましょう。

Ubuntu 16.04のEOLに伴いUbuntu 16.04イメージを意図的に停止させていた…らしいですが、Ubuntu-latestが16.04を指定していたようで本来影響受けない人のビルドがこけていたというひどい目にあったそうで、次回はちゃんとやられるでしょうが、災難でしたね。

2021/10/18にはUbuntu 16.04イメージが削除されるそうなので、早めに移行しましょう。

ではまた三週間後。

Translate to Japanese to Azure DevOps release not…

Azure DevOps 2021/9/8の更新

Sprint 192出ているの気づいていなくて遅くなりましたが、Azure DevOps Sprint 192のリリースノートの翻訳を行いました。オリジナルはこちらからご覧ください。

docs.microsoft.com

YAMLの新しい条件式これは便利ですね。例にも載っていますが、パイプライン内で動くコマンドに対して動的にパラメータの指定ができるとか、パイプラインの中でdiagnosticsが有効にされた状態と連動してツールがデバッグログを詳細に出したい時などに有効に使えそうですね。

YAMLパイプラインでCIやPRトリガーにパスフィルターの指定ができなかったの不便だったのですが、ようやく改良されて大変うれしいです。

ここからはちょっとわかりづらい機能改良ですが、GitHubレポジトリと組み合わせて、forkされたレポジトリからのPull Requestで自動的に検証のビルドを実行しないことをお勧めされています。なぜかというと、この仕様を利用してビットコインのマイニングに使われたからです。信頼されない外部の人からのPull Requestで自動的に検証を動かしてしまうとそこでマイニングが始まってしまう可能性があります。

Pull Requestをレビューしたうえで、コラボレーターにコメントを付けてもらうことで、検証ビルドを実行するように設定することで回避できます。このあたりの設定をWebの設定でTriggerを設定します。この設定をチーム外からのPull Requestのみにすると大体いい感じになるはずです。

ただ、この設定は少々面倒だったので、今回の更新から一度Pull Requestがマージされた後は信頼されるコントリビューターとして、コメントがなくても自動的にパイプラインが実行されます。これは外部からのコントリビューションを受け取るようなレポジトリを運用する場合は便利ですね。

Windows Server 2022のイメージがプレビュー提供、Big Surが一般提供、Ubuntu 16.04が廃止と一気に入れ替えになりますね。特に廃止になるUbuntu 16.04使っている人は気を付けてください。

ブランチ作ると基本的にそのブランチの管理権限を持ちます。管理権限があるということはそのブランチにほかの人の編集権限を追加できるということになって、コンプライアンスがきつい組織では問題になることがあります。こういう時にブランチ作成者にブランチ管理権限が付かないようにできる設定が増えました。

作ることを抑止する機能ではないので、気を付けてください。特定のブランチを管理者が認識しないメンバーが編集できないようにするという機能ですが、ケースによっては便利そうです。既定値は従来通りなので、困る場合のみ設定してください。

次もforkした場合の仕様追加です。今までupstreamへpull requestを出す権限にはupstreamのレポジトリでpull requestに対してvoteする権限も一緒に管理しているので、自分で自分のpull requestに対して「これOKOK」とupvoteの投票ができてしまっていました。Strict Vote Modeという権限と分離ししたそうです。

これ、オリジナルのドキュメントのスクリーンショットが間違ってますね。フィードバックしておきます。

今回もこまごまとセキュリティ&コンプライアンス関係の修正が多いですね。非常にニッチながらも役に立つ人はいると思いますが、一般向けではないかもしれないですね。

ではまた三週間後。

Translate to Japanese to Azure DevOps release not…

Azure DevOps 2021/8/19の更新

Azure DevOps Sprint 191の翻訳を行いました。オリジナルはこちらからご覧ください。

docs.microsoft.com

今回も少ないですね…翻訳その日にほとんどできていたんですが公開を忘れてました😅。LinuxのScale set agentってEnvironment上書きできなかったんですね。これでPremium SSDをworkspaceに指定できるようになりますね。

Delivery Plansとユーザーピッカーでの細かいバグ修正などだけのようです。前回から2週間でのリリースなのでこんなものなんですかね。

ではまた三週間後。

Translate to Japanese to Azure DevOps release not…

Azure DevOps 2021/8/4の更新

Sprint 189が出ないなぁと思っていたらなぜかスキップされてSprint 190がリリースされました。オリジナルはこちらから読んでください。

docs.microsoft.com

Boardsはバグ修正だけのようですが、Pipelinesはいくつか重要な仕様変更や機能追加がありますね。排他的ロックチェックに新しく追加されたsequentialオプションはupstreamとhotfixを別にリリースするような場合、environementに排他チェックをしていると現在は最新のリリースのみ実行されていました。累積的になっている場合はいいのですが、hotfixだけリリースすると累積的になっていないので古いパッチがリリースされず困るケースがあります。そういう時に「順番にすべてのパッチをデプロイしたい」場合に便利ですね。

Ubuntuエージェントの.NET Coreインストールポリシーが変更されましたがWindowsとmacOSも同じポリシーになります。.NET Core SDKの3桁目のマイナーバージョンの先頭桁は機能バージョンとなっており、最新の機能バージョンのみインストールされることになったそうです。9/6からこの仕様変更をうけるので、global.json"rollForward": "patch"が指定されていない場合、9/6以降ビルドが失敗する可能性がありますので気を付けてください。

PublishBuildArtifactsDownloadBuildArtifactsはすでに非推奨タスクになっていると思いますが、まだ使っている人は早めに移行しましょう。特にself-hostedのエージェントを使っていて、ネットワーク的にエージェントの自動更新ができないような環境ではアーティファクトのダウンロードで失敗することがあります。TLSハンドシェイクのエラーなどでアーティファクトのダウンロードが失敗するような場合はタスクの移行とエージェントの更新を行ってください。

また次6週間後にならないといいですね。ではまた3週間後。

Translate to Japanese to Azure DevOps release not…

Azure DevOps 2021/6/17の更新

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

docs.microsoft.com

PATのポリシーをAzure AD側で設定できるのはいいですね。もちろんAzure ADベースで動いている必要がありますがMSアカウントベースのやつはまぁいいでしょう。大規模にもならないし。

条件付きアクセスポリシーでIPv6サポートもうれしいですね。最近はv6プラスが使える環境も多いと思います。IPv4だけだと思っていたら実はIPv6使っていて、条件付きアクセスポリシーにかかってなかったとかないように。

ClassicリリースとマルチステージのYAMLではまだ若干の機能差があるのですが、その一つリリースに使ったビルド成果物を自動的に保持する機能がYAMLにはありませんでした。今回、YAMLのパイプラインをresourcesに定義することでそのギャップが埋まることになります。

docs.microsoft.com

Multi-Stageとはいえ、セキュリティやガバナンスを考慮すると一つのYAMLでビルドとリリースをやるのは正直お勧めしづらいので、リリースパイプラインはリソースにして分割していたほうがいいんじゃないかなとは思っています。

今まで必ずEnvironmentsを作ってからパイプラインで参照していたので全然気づかなかったのですが、YAMLパイプラインから作成してしまえばだれでもEnvironmentsの定義ってできたんですね。基本的にビルド定義のmasterマージとともにBuild Administratorが作るものだと思っていましたが、さすがにそれはちょっと…ということで制限が入ることになりました。いいことだと思います。

TFVC用のShell Extensionは長い間Visual Studio 2019に対応していなかったのですが、VS2022がリリースされた末期になってやっと対応版がリリースされました。長かったなーGitが主流になってきているとはいえ、業務で使うような巨大なレポジトリはTFVCの方が便利というケースもあるので、そういう人にはいいですね。

最近ガバナンス関係の強化が多いなぁと思いますが、これはこれで助かることが多いのでいいのではないでしょうか。

ではまた三週間後。

Translate to Japanese to Azure DevOps release not…

Azure DevOps 2021/5/26の更新

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

docs.microsoft.com

今回は機能は少なめでしたけど、Delivery Plans 2.0が正式版ということでエントリーは長めです。でもdeepl翻訳なんかよくなってるようで直すところ少なかった…。

Delivery Plans 2.0が正式版になって、拡張機能ではなくなりました。拡張機能であるが故の制約がほとんどなくなって便利になります。少し大きいチームを運用するときとか絶対に欲しい機能だと思いますので、ぜひ使ってみてください。Dependency Trackingもバックエンドや外部に依存するような機能があるときはすごく便利です。

Protected ResourceがVariable Groupsおよび、Secure Fileにも適用されました。これもとてもいいですね。私Protected Repositoryの動画作ろうと思っていたのですが、前のSprint 186が一向に展開されずまだかまだかと思っていたら単にブラウザーのキャッシュの状態か何かで出てないだけで、とっくに展開されていたという…予定通り2‐3週間で展開しているようです。

この件で調べていて教えてもらったのですが、海外のMVPが作っているTfsCmdletsの中にあるGet-TfsVersionというコマンドレットを使えば現在展開されているAzure DevOpsのバージョンがわかるのだそうです。試してみてください。オンプレミスでも使えるそうです。

github.com

全Azure Pipelinesユーザー待望のYAMLエディターでTemplateがようやくサポートされることになりました(Yes!)。現在のところPreviewを有効にして、すでにつくられているものでいくつかの限定的な検証ができるだけですがこれができるだけでもえらい助かります。パスの位置や引数とかどうしても間違えやすいですしね。私のところにはまだ来てないですが、来たら試してみます。

Ubuntu 16.04のEOLに伴い、Azure Pipelinesからも消えます。移行を促すために一定時間短い間わざとUbuntu 16.04を使ったパイプラインを失敗させるそうです。日本時間では夜中の2時とかになるので、もしも夜中の本番デプロイを実行している場合は気を付けてください。

同じくUbuntuイメージにインストールされる.NET SDKのパッチが最新版のみになるそうです。あーあのSDKの名前そういうつけ方だったのか。古いSDKに依存しているような場合(といってもセキュリティFIXだから早めの移行を)は注意してください。

ではまた三週間後。

Translate to Japanese to Azure DevOps release not…

Azure DevOps 2021/5/4の更新

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

docs.microsoft.com

今回、Azure Repos(Gitのみ)を保護されたリソースとして定義できるようになりました。これは非常にうれしい。別のエントリーでもお話したセキュリティ&コンプライアンスの欠点のひとつとして、「レポジトリーはreader(チームプロジェクトに参加していれば大体つく)権限があれば参照できてしまう」という仕様がありました。

kkamegawa.hatenablog.jp

例えばリリース用のYAMLテンプレートをどこかのレポジトリーで集中管理させて、特定のパイプラインのみ参照させたいということが基本的に難しかったのですが、この機能を使えば実行時の検証が入るのでとても助かります。

PAT管理のAPIが一般提供可能になるの早かったですね。前のスプリントでプレビューになったばかりなのに。PAT管理は悩みの種でしたが、テナントとの連携で楽になりそうです。

Artifactsのごみ箱に入ったフィードが消せるようになったのもストレージ節約になってうれしいですね。

ではまた三週間後。

Translate to Japanese to Azure DevOps release not…