Azure DevOps 2022/1/19の更新

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

docs.microsoft.com

年始だからということもあるのか、Microsoft hostedエージェントのlatestがwindows-2019からwindows-2022に変更されます。3月までかけてゆっくり更新していくそうなので、ビルドごとに違うエージェントにあたるのかもしれません。

最大の違いは入っているVisual Studioが2022か2019かということです。大体大丈夫なのですが、.NET Frameworkとか若干入っているものが違います。

  • .NET Framework 4.6.1とか4.5.1とかのEOLになったもの
  • .NET Core 2.1.x
  • Visual Studio 2010ランタイム

私もDeveloper Daysの収録するとき最初windows-2022のイメージ使おうとしてビルドでこけたのであれ?と思って調べたら.NET Framework 4.6.1 TargetingPackがwindows-2022に入っていないことに気付いたという…。なので、今後しばらくは「何もしてないのにビルドが壊れた」ということが起きやすいので、明示的にwindows-2019を指定するようにしましょう。

Pipelineフォルダーのリネームに「その配下に一つ以上権限があるパイプラインが含まれること」という条件が追加されました。たぶんほとんど大丈夫だと思いますが気を付けてください。ではまた三週間後。

Translate to Japanese to Azure DevOps release not…

Azure DevOps 2021/10/19の更新

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

docs.microsoft.com

今回は完全にPipelinesの更新だけですね。GitHub連携でパスフィルターを設定している場合に検証ビルドが実行されずPRが終わらなかったのですが、除外ルールに一致した場合、neutralというステータスを送るようになったので、ちゃんとPRが進むようになったということですね。

保護リソースに対して今まではすべてのパイプラインのアクセスが許可されていたのですが、今後はデフォルトで無効になるので、明示的に指定しなくてはならなくなりました。一部はもとからあった気がしたんですが…気のせいかな。

パイプラインの特定のタスクの前後で明示的にdecoratorの指定ができるようになりました。DIみたいなもので、タスクを改造しなくても好きな挙動を追加できるようになります。例示されているように、成果物を発行したらログを記録するみたいなことができるのは便利ですね。

macOS10.14のイメージが2021/12にリタイア、Windows Server 2016(VS2017が使える)も2022/3にリタイアだそうです。Visual Studio 2017に依存しているソリューションを持っている人は早めに移行しましょう。もしくはself-hostedへの移行ですね。

ではまた三週間後。

Translate to Japanese to Azure DevOps release not…

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…