When working with azure I quickly missed a way to have a seamless flow for function apps. I first needed to deploy my infra, then upload some code in a separate flow. After some days of struggling I decided to create an asset management tool.

This tool became bicep-assets. This works by first generating an asset on your local machine and putting the reference details in a generated bicep file.

When deploying it will first push the generated asset to a storage account. After this bicep/ARM can be instructed to copy the asset to the finel destination like a function app zip deployment.

This tool is now a general purpose tool which can work with any kind of assets. Think about assets like:

  • api.yaml (open api definition)
  • logic app definition
  • Dockerfile
  • function-app.zip
  • static-website.zip

There are build-in 3 bicep/ARM modules to work with the assets:

  • copy: Just copy an asset between storage accounts
  • extract: Extract zip file asset content in another storage account
  • sasUrl: Generate a SAS URL to download the asset