How do I deploy an Azure Function using Octopus Deploy?

azure
how-to
(Bob Walker) #1

I have an Azure Function I would like to deploy using Octopus Deploy. How do I go about doing that?

(Bob Walker) #3

If you would like to use the built-in functionality then continue reading. This answer is going to borrow extensively from this blog post was written earlier in 2018.

I have a pretty simple function app, it has a single function, Version which returns the version from the config file.

Prep Work

You will need to do the following prep work for this to work.

Upgrade Octopus Deploy

Ensure you are on a recent version of Octopus Deploy. This was originally setup using a instance running 2019.11.1.

Configure your Azure Functions in Azure

These functions will need to exist prior to deploying to them. They can be empty, they just need to exist.

Configure Azure Account in Octopus

You will need to add 1 to N Azure accounts in Octopus Deploy.

Add each function app as an Azure Web App in Octopus Deploy

Octopus Treats Azure Web Apps and Azure Function Apps the same. To do that go to Infrastructure -> Deployment Targets -> Add Deployment Target

Enter a name, role, and environment. Then select the account you want to use. Once you select the account you will be able to select the function app as you can see below.

Package Your Azure Function App

You will need to package up your Azure Function App into a .zip file for Octopus to deploy. If you are using the CLI tools provided by Azure to build your app, you will want to zip up the contents of the bin\output folder.
image

The zip file will look like:
image

Configure your project

In your project, you will want to add the “Deploy Azure Web App” step to your process.

You will note at the bottom of the screen the JSON Configuration Variables has been configured. This is a Configuration Feature available to Azure Web Apps.

It will allow me to replace the VersionNumber in my settings.json file.
image

With a value stored in Octopus Deploy.

Set it in action

You can view the Azure Functions space in our samples instance to see this all in action: https://samples.octopus.app/app#/Spaces-1

You can try out the Azure Function by hitting one of these URLs: