kkamegawa's weblog

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

Azure PipelinesでのArtifactsからのダウンロードタスクベンチマーク

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

qiita.com

Azure Pipelinesにおいて、ビルド結果の成果物をパイプラインもしくはジョブ間で受け渡すにはArtifacts保存用のストレージを使います。

learn.microsoft.com

Artifactsへアップロードおよび、ダウンロードするタスクは二種類用意されています。

learn.microsoft.com

一応ドキュメントにはPublishBuildArtifactsおよび、DownloadBuildArtifactsよりもDownload Pipeline ArtifactsPublish Pipeline Artifactsを使いましょう、と書かれています。これらのタスクはGitHubにソース公開されていますが、中身はPublishBuildArtifacts以外ありません。

ダウンロードタスクに関してはビルドエージェントの機能を使っているので、そんなに変わらないようです。どちらのタスクを使っても同じArtifactsのダウンロードはできます。

github.com

昨日のエントリーのTestBaseの160MBくらいのデータを並列でダウンロードした結果。

何回か実施したら変わるかもしれませんが、どちらもエージェントの機能を使っているので、有意な差はなさそうです。

github.com

アップロードに関しては、PublishBuildArtifactsタスクはTypeScriptで実装されています。

アップロードに20秒かかっています。

github.com

PublishPipelineArtifactタスクはビルドエージェントの機能を使っているようで、中身はありません。

PublishPipelineArtifactタスクだと11秒で完了しています。160MBで9秒も違うとすごい差ですね。非推奨となるのもわかります。今のところ非推奨フラグはついていませんが、新規で作るパイプラインはPublishPipelineArtifactタスクを使いましょう。