最近 GitHub Actions がメインで Azure Pipelines は記憶から消えかけてるので、基礎的なポイントをメモしておきます。
前置き
雑なメモなのでいきなり補足ですが、ビルドの artifacts (= ビルドで生成されたファイル) を publish するってのは、Azure pipelines の実行時に以下図の赤枠のところに保存することを指しています。
ここに保存して別の stage でダウンロードして利用するためのものです。

ビルドの artifacts を publish する際のポイント
注意点
ポイントは、PublishBuildArtifacts@1 は非推奨となっている
点です。その代わりに以下を使うことを推奨されています。
PublishBuildArtifacts@1 でサンプルを書かれているページが残っているので、さらっと調べたとき開いたページ次第だと悪いと気づかないです。
「なんか...もっとシンプルじゃなかったっけ?」と違和感を覚えたのがこのブログを書くモチベでした😪。
実装例
具体的な例として Nuxt の SPA を npm run generate した後 publish するならこれだけで OKです。
- publish: '$(System.DefaultWorkingDirectory)/dist' artifact: app
余談としてartifact に設定する値は...フロントエンド界隈では何が一般的なんでしょうね。dist のままなのか drop とかも例で書かれてるの見るしな...
さらに話を脱線しますが、ファイルのサイズ次第では zip にした方が良いかもってときはこんな感じですね。zip するファイル名 archiveFile は適当に build number つけてるだけです。
- task: ArchiveFiles@2 inputs: rootFolderOrFile: 'dist' includeRootFolder: false archiveType: 'zip' archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildNumber).zip' - publish: '$(Build.ArtifactStagingDirectory)/$(Build.BuildNumber).zip' artifact: app
artifacts をダウンロードするには
ポイント
DownloadPipelineArtifact@2 も、publish ショートカット版と同様です。「CI/CD フローの一部としてアーティファクトを使用する場合は以下のように書かれています。
CI/CD フローの一部としてアーティファクトを使用する場合は、 こちらのダウンロードショートカットを参照してください。
使うべき download タスクのドキュメントは以下です。
実装例
これだけで書けちゃうので、これに関しては GitHub Actions よりほんのちょっとだけ楽です。
- download: current artifact: app
これで、先ほどアップロードした $(Build.BuildNumber).zip' は、$(Pipeline.Workspace)/app` の直下にダウンロードされます。利用例として、 AzureFunctionApp@1 で package を指定するには以下の感じになります。
- task: AzureFunctionApp@1
inputs:
azureSubscription: <service connection 名をセットするとか>
appName: <function app の名前をセットするとか>
package: $(Pipeline.Workspace)/app/$(Build.BuildId).zip
終わりに
ちょっとしたメモは非公開ブログに書いてるんですが、あまりに投稿数に差があるし別にちょっとしたメモでもこっちに書いてよくねーかと思ったりした今日この頃です。
