A question that pops up occasionally is how to setup your Azure Functions DevOps flow when you’re using C# underneath. Today’s post will be a brief one to run you through this process. If you should prefer a video on this… That exists too! Curtosiy of the app service product group.
Let’s take a look at the build process. We have (at least, as this flow did not do any testing => “Shame on me!”) three steps in the build process ;
- Restore the nuget packages
- Build the solution (and create a single zip file)
- Publish the artifact
So let’s take a look at one of my own builds… First I kick off with installing NuGet on my build agent (should it not already be present).
Afterwards I do the NuGet restore ;
Then we build the solution ;
Here I used the following MSBuild arguments ;
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation=”$(build.artifactstagingdirectory)/package/” /p:DeployIisAppPath=”Default Web Site” /p:OutputPath=”$(build.artifactstagingdirectory)/out/”
The bold path is the instruction where it’ll generate the build package. Oddly enough, at a given time in the past, I had some issues with that part, and I created my own archive step ;
Though I’m pretty sure it could be phased out… Nevertheless, know this is a possibility too!
And once done, we’ll publish the artifact ;
What does a sample build look like now?
If we dive into the “Archive” step, then we see that a zip file has been created at “d:\a\1\a\”, containing our much needed functions files ;
Though, as mentioned, the build solution has a similar one in the “d:\a\1\1\package” directory. So feel free to use that one and omit the archive step for your build!
So what about the release? That’s the “easy” part… 😉 It bears down to an app service deployment.
Which is triggered by the artifact we published.
When you are working with a compiled version of functions, then be sure to look into the VSTS integration. It’s a bit of cursing when setting it up, though I hope this posts help in smoothing that process. You will, however, enjoy the compiled version! From experience, I can say that the performance improvement is more than nice. 😉