Azure SDK documentation update: set_versions.pyのdev feed変更点と確認ポイント

2026年5月20日にマージされた「Azure SDK documentation update: eng, use dev feed for set_versions.py」は、Azure SDKのアプリケーションコードや公開APIを変える更新ではありません。要点は、Azure SDK for Javaのリリース自動化で次の -beta.N バージョンを決める際、set_versions.py がMaven CentralではなくAzure ArtifactsのJava dev feedを参照するようになったことです。(GitHub)

そのため、一般のJavaアプリ開発者がすぐに依存関係を書き換える必要は基本的にありません。一方で、Azure SDK for Javaのリリースパイプライン、ドキュメント公開、社内外のフォーク環境、Mavenフィードの許可設定を管理している担当者は、pkgs.dev.azure.com へのアクセス、Azure Artifacts認証、version_client.txt の更新結果を確認すべき更新です。

目次

Azure SDK documentation update: eng, use dev feed for set_versions.pyの概要

今回の変更は、Azure SDK for Javaリポジトリの eng/versioning/set_versions.py に対する小さな修正です。公式PRでは、1ファイルのみが変更され、差分は1行の追加と1行の削除でした。変更対象は get_beta_version_to_use() という関数で、ライブラリのバージョンをインクリメントするときに、既存の X.Y.0-beta.N を調べて次のbeta番号を決める処理です。(GitHub)

変更前は、maven-metadata.xml の取得先がMaven Centralでした。

https://repo1.maven.org/maven2/{groupId}/{artifactId}/maven-metadata.xml

変更後は、Azure SDK for Javaのpublic dev feedを参照します。

https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-java/maven/v1/{groupId}/{artifactId}/maven-metadata.xml

この変更により、リリースや開発用フィードへの公開フローと、バージョン番号を判定するスクリプトの参照先がそろいます。PR上のレビュー概要でも、この修正はリポジトリのrelease/dev-feed publishing workflowに合わせるための変更として説明されています。(GitHub)

何が変わったのか

今回のポイントは「beta番号の決め方」ではなく、「beta番号を決めるために参照するメタデータの場所」です。

項目変更前変更後
対象ファイルeng/versioning/set_versions.py同じ
対象関数get_beta_version_to_use()同じ
メタデータ取得先Maven CentralAzure Artifacts public dev feed
取得するファイルmaven-metadata.xml同じ
主な影響Maven Central上の公開済み情報を前提にbeta番号を判定dev feed上の公開状況を前提にbeta番号を判定
アプリ側のAPI変更なしなし

get_beta_version_to_use() は、指定された groupIdartifactIdmaven-metadata.xml を読み込み、たとえば 1.2.0-beta.11.2.0-beta.2 が存在すれば、次に使う番号として beta.3 を返す仕組みです。現在のスクリプトにも、該当するbeta番号の最大値に1を足して返す処理が含まれています。(GitHub)

つまり、バージョニングの基本ルールは変わりません。変わるのは「どこに公開済みとして見えているバージョンを正とするか」です。

なぜdev feedを使うようになったのか

PR本文では、内部のAzure DevOpsリリースパイプラインで失敗通知を受けたこと、ただし修正はリリースパイプライン上の問題であり直接テストしづらいことが説明されています。(GitHub)

Azure SDK for Javaでは、日次ビルドや開発中パッケージをAzure Artifactsのdev feedに公開する運用があります。公式のContributing Guideでも、毎日エンジニアリングシステムがSDKコンポーネントのパッケージを生成し、Azure Artifactsのpublic feedに公開すると説明されています。あわせて、このdaily package feedは一時的な利用を前提とするvolatileなフィードであり、恒久的な依存先として扱うべきではないとも明記されています。(GitHub)

リリースパイプラインでは、パッケージ公開、バージョン更新、ドキュメント更新が段階的に実行されます。Azure SDK for Javaのリリース用テンプレートには、dev feedへの公開、UpdatePackageVersionPublishDocs、nightly branch向けのドキュメント公開といったジョブが含まれています。(GitHub)

この流れを考えると、Maven Centralだけを見てbeta番号を決めると、リリースパイプライン内で先にdev feedへ公開されたパッケージや、まだMaven Central側に反映されていない状態とずれる可能性があります。今回の更新は、そのずれを避けるために、スクリプトの参照先を実際のリリース・dev feed運用に近づける修正と見てよいでしょう。

影響を受ける対象者

今回のAzure SDK documentation updateは、すべてのAzure SDK利用者に同じ影響を与えるものではありません。確認すべき範囲は、Azure SDK for Javaのリリース自動化に関わっているかどうかで大きく変わります。

対象者影響対応の優先度
Azure SDK for Javaを通常のMaven依存関係として使うアプリ開発者直接のコード変更は基本的になし
Azure SDK for Javaのbeta版を検証している開発者beta番号や公開タイミングの見え方に注意
Azure SDK for Javaリポジトリのフォークを運用しているチームset_versions.py の取り込みとフィード設定確認が必要
リリースパイプライン管理者Azure Artifactsへのアクセス、認証、プロキシ設定を確認
ドキュメント公開・メタデータ更新担当者UpdatePackageVersion やdocs publish後の成果物確認が必要

通常の業務アプリで azure-coreazure-identity などのAzure SDK for Javaパッケージを使っているだけなら、このPRを理由に pom.xml を変更する必要はありません。注意すべきなのは、自分たちのCI/CDでAzure SDK for Javaのリリース補助スクリプトを実行しているケースです。

管理者・開発者が確認すべき設定

pkgs.dev.azure.com への通信が許可されているか

今回の変更後、set_versions.py はMaven CentralではなくAzure Artifactsのpublic dev feedにある maven-metadata.xml を取得します。企業ネットワーク、閉域CI、プロキシ配下のビルドエージェントでは、次のドメインへの通信が許可されているか確認してください。

pkgs.dev.azure.com
dev.azure.com

ここで注意したいのは、Maven Centralへの通信許可をすぐに削除しないことです。今回の修正は set_versions.py のbeta番号判定に関する参照先変更であり、ビルド全体でMaven Centralや他のリポジトリが不要になったことを意味しません。依存関係解決、プラグイン取得、社内ミラー設定などは別途確認が必要です。

Azure Artifactsの認証設定

Azure SDK for JavaのContributing Guideでは、このリポジトリが依存関係解決にAzure Artifacts feedを使うこと、外部コントリビューターと内部コントリビューターで設定が異なることが説明されています。外部コントリビューター向けには、キャッシュ済みパッケージは匿名で提供される一方、未キャッシュの依存関係では認証が必要になる場合があるとされています。(GitHub)

リリースパイプラインでは、Azure Artifacts認証に MavenAuthenticate@0 を使う箇所もあります。パイプライン側で artifactsFeeds、サービス接続、資格情報、Maven settingsが正しく維持されているか確認しましょう。(GitHub)

特に、次のようなエラーが出た場合は、スクリプトの不具合と決めつける前にフィードアクセスを確認してください。

症状確認ポイント
401 UnauthorizedAzure Artifacts feedへの権限、Maven認証、Azure CLIログイン、サービス接続
404 Not Found対象artifactのメタデータがdev feedに存在するか、groupId/artifactIdの指定が正しいか
プロキシ経由でタイムアウトCIエージェントのプロキシ設定、許可ドメイン、SSL検査設定
期待と違うbeta番号になるdev feed上の既存バージョン、version_client.txt、対象ブランチの状態

version_client.txt の更新結果

Azure SDK for Javaでは、eng/versioning/version_client.txt にライブラリごとのdependency versionとcurrent versionを管理する仕組みがあります。Contributing Guideでは、形式は次のように説明されています。(GitHub)

groupId:artifactId;dependency-version;current-version

たとえば、リリース後に次のbetaへ進める場合、set_versions.py はこのファイルや関連するPOM、READMEのバージョン更新に関わります。今回の変更後は、beta番号の判定元がdev feedになるため、次の点を確認してください。

  • 対象ライブラリの groupIdartifactId が正しい
  • dev feed上の maven-metadata.xml に既存betaが反映されている
  • version_client.txt のcurrent versionが想定どおりに進んでいる
  • dependency versionを誤って未公開betaへ寄せていない
  • POMやREADME内のバージョン更新タグが期待どおり置換されている

特に、複数パッケージを同じリリースパイプラインで扱う場合、あるパッケージのcurrent versionと別パッケージのdependency versionが意図せずずれることがあります。リリース前レビューでは、差分全体を「ファイルが更新されたか」ではなく「依存関係として使われるバージョンが正しいか」で確認するのが重要です。

移行・展開時の確認手順

フォークしたAzure SDK for Javaリポジトリや、独自のリリース自動化で set_versions.py を使っている場合は、次の順で確認すると安全です。

手順作業内容判断基準
1PR #49223相当の変更を取り込むset_versions.py のURLがdev feedに変わっている
2CIエージェントからdev feedへアクセスするmaven-metadata.xml を取得できる
3対象artifactでbeta番号を確認する既存betaの最大番号 + 1 になっている
4version_client.txt の差分を確認するcurrent/dependency versionの役割が崩れていない
5POMとREADMEの更新結果を確認する利用者がコピーする依存関係表記が正しい
6docs publish系ジョブを確認するPackageInfoやメタデータ更新が失敗していない
7小さな対象でリリース検証するbeta番号の重複、欠番、公開先のずれがない

ローカルで完全にリリースパイプラインを再現するのは難しい場合があります。PR本文でも、修正者はリリースパイプライン上の問題であるため直接テストしづらいと述べています。(GitHub) そのため、ローカル実行だけで完了とせず、実際のCI/CD上でメタデータ取得、バージョン更新、公開後の成果物まで確認することが重要です。

具体例:beta番号の判定はどう変わるか

たとえば、あるライブラリの次期バージョンが 1.5.0-beta.N だとします。

dev feed上の maven-metadata.xml に次のバージョンがある場合、

1.5.0-beta.1
1.5.0-beta.2

get_beta_version_to_use() は、同じmajor/minor/patchに一致する beta.2 を最大値として見つけ、次に使う番号として 3 を返します。結果として、current versionは 1.5.0-beta.3 のように進みます。

変更前は、この判定にMaven Centralのメタデータを使っていました。変更後はAzure Artifactsのdev feedを使います。そのため、Maven Centralにはまだ見えていないがdev feedには存在するbetaがある場合、変更前後で次に選ばれるbeta番号が変わる可能性があります。

ここで大切なのは、dev feedを「本番利用の依存先」と誤解しないことです。Azure SDK for Javaの公式ガイドでは、daily package feedは一時的な利用を前提とするvolatileなフィードと説明されています。(GitHub) 検証用途やリリース自動化では有用ですが、業務アプリの長期運用では、通常どおり安定版または正式に公開されたbetaを依存関係として管理するのが基本です。

よくある失敗と回避策

Maven Centralの反映だけを見てbeta番号を判断する

今回の変更後、set_versions.py のbeta番号判定はdev feedを参照します。Maven Centralだけを見て「まだ beta.2 がないから次は beta.2 のはず」と判断すると、実際のパイプラインでは beta.3 が選ばれることがあります。

リリース担当者は、Maven Central、dev feed、version_client.txt の3点を分けて確認しましょう。

フィードのアクセス失敗をスクリプトのバージョン不整合と誤認する

maven-metadata.xml を取得できない場合、原因はバージョン不整合ではなく、認証、プロキシ、ネットワーク、フィード権限の可能性があります。特に、Azure Artifacts周りでは 401 Unauthorized が出ることがあります。Contributing Guideでも、401発生時の確認項目としてアクセス権やログイン状態の確認が案内されています。(GitHub)

新規artifactでメタデータが存在しないケースを見落とす

完全に新しいartifactでは、dev feed側にまだ maven-metadata.xml がない場合があります。このとき、単純に「beta.1になるはず」と思い込むのは危険です。スクリプトがどのように例外を出すか、パイプラインがその例外をどう扱うかを確認してください。

PR上のAIレビューコメントでも、urllib.request.urlopen() は非2xxレスポンスで HTTPError を送出するため、ステータスコード確認の分岐だけでは404や401を扱いにくい可能性が指摘されています。(GitHub) 実運用では、失敗ログにHTTPステータスや対象URL、groupId/artifactIdが残るようにしておくと、原因切り分けが速くなります。

docs publishの失敗を後回しにする

この更新は「documentation update」として扱われていますが、単にMarkdownを直す変更ではありません。Azure SDK for Javaのリリーステンプレートでは、パッケージ公開後に UpdatePackageVersionPublishDocs に相当するジョブが続きます。(GitHub)

つまり、パッケージ公開が成功しても、ドキュメントメタデータや参照ドキュメントの更新で失敗する可能性があります。リリース完了判定では、次の成果物まで確認してください。

  • PackageInfoの内容
  • docs metadataの更新結果
  • README内の依存関係表記
  • GitHub Pagesやlearn.microsoft.com向けの参照ドキュメント公開結果
  • nightly branch向けのドキュメント更新結果

一般のAzure SDK利用者が取るべき対応

通常のAzure SDK利用者は、今回のPRを理由にすぐ依存関係を変更する必要はありません。確認すべきことは、次の3点に絞れます。

  • 自分のアプリがdev feed上のdaily packageに依存していないか
  • pom.xml に意図せずalpha版や一時的なフィードのURLを入れていないか
  • beta版を使っている場合、正式なリリースノートやパッケージ一覧で最新バージョンを確認しているか

Azure SDKのbeta版は、新機能検証やプレビュー機能の確認には便利です。ただし、beta版は将来変更される可能性があります。業務システムで使う場合は、依存しているAPI、リリース予定、GAへの移行計画を事前に確認しましょう。

リリース管理者向けチェックリスト

今回の更新を取り込む担当者は、最後に次の項目を確認してください。

チェック項目確認内容
PRの取り込みset_versions.py のURLがdev feedに変更済みか
ネットワークCIエージェントから pkgs.dev.azure.com へ到達できるか
認証Azure Artifacts feedへの権限、Maven認証、サービス接続が有効か
バージョン判定既存betaをdev feed基準で正しく拾えているか
新規artifactメタデータ未作成時の失敗ログと対応手順が明確か
依存関係current versionとdependency versionの役割が崩れていないか
docs更新PackageInfo、README、ドキュメントメタデータが期待どおり更新されたか
ロールバックbeta番号の誤採番や公開失敗時の再実行手順があるか

小さな差分に見える更新ほど、リリース自動化では影響範囲を見落としやすいものです。今回の「Azure SDK documentation update: eng, use dev feed for set_versions.py」は、アプリケーションコードの変更ではなく、リリース時に「どの公開済みバージョンを見て次のbeta番号を決めるか」を変える更新です。

開発者は依存関係の利用先を、管理者はCI/CDのフィードアクセスと認証を、リリース担当者は version_client.txt とドキュメント更新結果を確認しましょう。特にフォーク環境や社内ミラーを使っている場合は、dev feedへの到達性を確認してからリリースパイプラインへ展開することが、安全な移行の第一歩です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次