BEACHSIDE BLOG

Azure と GitHub と C# が好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

Azure Pipelines でビルドの Artifacts のアップロード (publish)・ダウンロードの Tips

最近 GitHub Actions がメインで Azure Pipelines は記憶から消えかけてるので、基礎的なポイントをメモしておきます。

前置き

雑なメモなのでいきなり補足ですが、ビルドの artifacts (= ビルドで生成されたファイル) を publish するってのは、Azure pipelines の実行時に以下図の赤枠のところに保存することを指しています。

ここに保存して別の stage でダウンロードして利用するためのものです。

f:id:beachside:20211130134218p:plain

ビルドの 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

終わりに

ちょっとしたメモは非公開ブログに書いてるんですが、あまりに投稿数に差があるし別にちょっとしたメモでもこっちに書いてよくねーかと思ったりした今日この頃です。

f:id:beachside:20211130133729p:plain