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