Deploying IronPdf to Azure Functions via CI/CD using Azure DevOps

Published on Sunday, August 20, 2023

You can find the source code for the sample I am using in this blog post on my GitHub. This contains the code for Azure Function along-with YML pipeline that I'm going to discuss here.

Brief Introduction to IronPdf

IronPDF is the leading C# PDF library for generating & editing PDFs. Its user friendly API allows developers to rapidly deliver professional, high quality PDFs from HTML in .NET projects. Some of the key feature are:

  • Convert web forms, local HTML pages, and other web pages to PDF with .NET
  • Allow users to download documents, send them by email, or store them in the cloud.
  • Produce invoices, quotes, reports, contracts, and other documents.
  • Work with ASP.NET, ASP.NET Core, web forms, MVC, Web APIs on .NET Framework, and .NET Core.

You can read more about it on their official website

Setting the context

In this blogpost, I'm going to focus on deploying your code that uses IronPdf to an Azure Function. I'll be using Azure Function on Windows, but you can find the guidance on Linux on their website as well.

For the purpose of demonstration, I've created a simple HTTP Triggered Azure Function that receives HTML string in request and returns the PDF File. I assume, the function app is already created.
Here is how the generated PDF looks like. Generated Pdf

Deploying to Azure Function via Azure DevOps

Now we have a functioning code, let's deploy this to Azure via CI/CD pipeline using Azure DevOps

The CI/CD pipeline is similar to any azure function pipeline, there is no major difference except choosing the right deployment method.

Choosing the Deployment method.

In Azure DevOps, for the AzureFunctionApp@1 task, there are the following supported methods.

  • auto
  • zipDeploy
  • runFromPackage

auto is the default method, when you add a task. But for IronPdf, zipDeploy is the recommended mode

YML Snippet

Here is the yml snippet for this step:

steps:
- task: AzureFunctionApp@1
  displayName: Azure functions app deploy
  inputs:
    azureSubscription: <subscription name>
    appType: functionApp
    appName: ironpdf-azurefunc-app 
    package: $(Pipeline.Workspace)/azurefunction/a.zip
    deploymentMethod: zipDeploy
    appSettings: >
      -FUNCTIONS_EXTENSION_VERSION "~4"

The only different is setting the deploymentMethod to zipDeploy instead of default auto.

This will deploy the code from your solution in Azure Function.

You can find the complete CI/CD pipeline in my GitHub repository here. You will need to adjust the settings to make it work for your environment such as subscription name etc.

Bonus: GitHub Action

If you prefer using GitHub, I have also included the action for your in my repository. You can find it here

Hope it helps. Cheers



comments powered by Disqus