kkamegawa's weblog

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

Azure DevOps 2023年のまとめと2024年の予想

これはAzure DevOpsアドベントカレンダー25日目の記事です。参加していただいた皆様、読んでいただいた皆様ありがとうございます。

qiita.com

今年リリースされた機能一覧はこちら。

learn.microsoft.com

来年以降もしくは予定されていた機能。

learn.microsoft.com

おそらく来年の早いうちには2024年のロードマップが公開されると思います。

GitHub Advanced Security for Azure DevOps(GHAzDo)

長いので、MSの人はほぼGHAzDo(ぎゃずどぅ)という略称を使っています。月額$49/user(アクティブコミッター単位)と少々お高いサービスですが、CoverityとBlackDuckを組み合わせたサービスなのでまぁ、こんなものかなぁという値付けですね。待望のREST APIも公開されたのでbranch policyで脆弱性解決済みならマージする、というワークフローできるかなと試していたのですが、ちょっとドタバタしてカレンダーに間に合っていません。

codeql.github.com

VS CodeにはCodeQL拡張機能があるのですが、これもまだうまく試せていません😅。クエリパックも作ってみたい(GHAzDoは未対応)。来年に期待ですね。GitHubからクエリパックのダウンロードができるのですが、GHAzDo側でも対応してほしいなー。需要があるかどうかはちょっとわかりませんが。

シークレットスキャニング、普通「そんなことする奴いない」と思いつつも漏れるのがシークレットキー。デフォルト有効にしておけばいいとは思います。

あとは常時最新のcodeql実行バイナリーダウンロードするタスクが欲しい。割と頻繁に更新されていますが、セルフホストエージェントにそんなちょいちょい更新かけられないので…。タスク作るのは比較的簡単ですが、上書き保存できるかな?

認証・認可関連

Workload Identity(OIDC)と、PATを廃止すべくManaged IdentityとService Principalがようやくサポートされました。まだPAT使う局面が多いですが、私も自分で作っているPATに依存したタスクとか直していこうと思います(リリースノートのスクレイピングのやつとか…)。

Boards

learn.microsoft.com

SwimlaneのルールがGAになりました。設定した条件を満たせば自動的に指定されたSwimlaneに移動するという機能です。大規模なプロジェクトではかなり助かると思いますが、この機能はもとより、そもそもPJをBoardsで管理したいという人があまりいないのが悩みの種です。紹介はして、説明も支援もするんだけど、Excelで作るガントチャートの重力から逃げられる人は多くありません。

learn.microsoft.com

長らく「Markdownサポートしていないのは~」と言われていましたが、コメントのMarkdownへの切り替えができるようになりました。ただし、双方向ではないので、どちらを使うかチーム内で合意を取りましょう。この辺、Markdown好まれない人もいるのでこうなっているのでしょうが…。

Pipelines

GHAzDo関連以外はほとんどライフサイクルメンテナンスとOIDCサポート、エージェントでService Principalサポートが大きかったかなぁ。Nodeランタイムの6-14がEOLになったのと、Agentが.NET 6を使うver3系列になったこと、REST APIの信頼性もありましたね。

devblogs.microsoft.com

承認とチェックの更新も強化されました。こういった信頼性の強化はありがたいです。来年にはGitHub ActionsにArmのRunnerが来るそうなので(Enterprise Cloudのみ)、Azure Pipelinesにも来ないかなと思っています。あと、M1 Mac用。

GUIで設定するクラッシックパイプラインが新規organizationでは初期無効になっているなど、来年はいよいよYAMLパイプラインへの移行が始まりそうです。そういえば、今までYAMLパイプラインってほとんどWeb GUIで書いていたのですが、今はVS Codeと拡張機能を使うようにしました。なぜかというと、GitHub Copilotがいいコミットメッセージ作ってくれるんですよ…今までWeb GUIで作るとupdate yamlとかのデフォルトメッセージだったのが分かりやすくなりました。

ただ、タスクのパラメータ指定を支援するGUIアシスタントはまだWeb GUIのほうが便利なので(なぜGitHub Actionにこの機能ないんだろう)、最初はWeb GUIで書いてしまうのですが😅。

Repos

これはもうめちゃめちゃ少ない…リリースノートには3件あっただけです。ブランチポリシーで自分自身で承認できないようにする機能、ポリシー編集の禁止、ビルド時に役立つblobless filterとtreeless filterのサポートですね。前者が開発するときに便利で、後者がビルド時のダウンロードに便利だそうです。

github.blog

私はwinget-pkgに対していくつかPull request送っていますが、これフォルダー単位で作るけど、不要なフォルダーのほうが多いのでこういうcloneすると軽くなりそうです。

Artifacts

古いNuGetタスクが廃止されますよ、という話とRustのパッケージマネージャーであるCargo Cratesサポートがパブリックプレビューというだけですね。RustはWindowsでも使い始めているので必然という感じでしょうか。

Test

何もありませんでした…やることはあると思うんだけどなーレポーティングなどはWidgetで管理できるけど、たとえばPlaywriteと統合してステップを見やすくするとかあるとうれしいかも。

2024年に向けて

learn.microsoft.com

来年のロードマップもありますね。Azure DevOpsのセキュリティはあちこちに分散していてちょっとわかりづらいので、それが一画面でシンプルに見える(だろう)Security Overviewは便利そうです。

あとはCustom CodeQL queries、便利そうだけどカスタムクエリの作り方学び中。

パイプラインのStageレベルでの並列実行…を抑制する機能が提供されるんですね。Stage AとBで同時に単一アクセスしか許されないデータ(例えばデータベース内のアトミックな更新を行う)アクセスが同時に起きないように抑制するための機能を提供してくれるそうです。これは便利そう。

多分まだまだ公開されていないロードマップがあると思いますが、楽しみにしておきます。来年はもうちょっとGHAzDo使っていきたいと思っていますので、よろしくお願いします。