Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Objective

You have a working Azure Java Function and the source code is managed in a Git repository. The goal of the tutorial is to automate the deployment of one or more Java Functions to Azure Function App.  This automation will include:

...

We will walk through each of the FlexDeploy features that will be created/configured to accomplish this goal and have the Java Function deployed in a very short amount of time.

Checklist

Checklist

Description

Azure Tenant Id

Azure Tenant Id for the company

Azure Subscription Id

Azure Subscription where the Function App exists

Azure Client ID

Client ID to connect to desired Azure Subscription

Azure Client Key

Password for the Client ID

Azure Client ID permission

The Client ID must have relevant access in target Function App to deploy code

Azure Function App

The Function App with relevant runtime should already be created

Azure Resource Group

The Resource Group containing the Function App

Azure CLI installation

Azure CLI needs to be installed where the plugin operation shall run (FlexDeploy server)

Azure CLI in class path

Azure CLI should be added to class path on the FlexDeploy Server. Else the path can also be set under FlexDeploy environment level property

Configure cloud account

First, an Azureaccount needs to be configured under Topology. FlexDeploy will connect to the right Azure Subscription with provided details and do the deployment.

...

  1. Client Key is a password field and hence needs to be kept hidden. To update the same click on the pencil icon as shown below

  2. Update the Client Key value under Secret Text. This is to make sure no one else can retrieve the password

...

Git repository structure

The Git repository should contain the codebase. Alongside it can also contain any Application Setting and Connection String related attributes in respective files(any naming convention allowed). These files are not mandatory, however, in case someone has any Application Setting and Connection String property to update this is recommended. Please review the Application Setting and Connection String property update for a detailed explanation.

The Sample Git repository structure is given below.

...

Build and Deploy Workflows

Navigate to the Workflows tab and create a workflow using the “+”(Click to create new Workflow) button as highlighted below.

...

Below given is a sample build workflow to build a Java executable(jar file) and create an artifact from it.

...

Step-i: Clone Git Repository

This step will clone the Git repository codebase into the project execution working directory. The Git URL will be retrieved from Source Control configured under Project Configuration.

...

Git Codebase

...

Exported Codebase

...

Step-ii: Execute Maven Build

The below step will execute the maven build with the project pom.xml and will create a Java executable(.jar) file inside the target directory.

...

Step-iii: Copy the properties file to the intermediate dir

Application Setting and Connection String JSON files(if applicable/present) will be moved to the intermediate directory. An intermediate directory can have any name, in this case, we are using the artifactsObjects folder inside the temp directory. File names are mentioned under File Filter with ‘##’ separated(as advised in the description). Application Setting and Connection String values can also be passed as input to deploy workflow. Application Setting and Connection String files are optional, please review the Application Setting and Connection String property update for a detailed explanation.

...

Step-iv: Create an archive of the executable in the intermediate dir

Per the Azure Function App deployment requirement, we have created an archive with the java executable inside it.

...

Note: the jar file(or any executable files) inside the .zip file shouldn’t be inside any subfolder. Else once the zip file is deployed to Azure Function App may not work.

Step-v: Create an archive of the executable in the intermediate dir

Post execution of the above steps the intermediate directory(artifactObjects) should contain files as shown below.

...

Map the variables against the output of the deployFunctions operation to capture the responses.

...

Project configuration

Navigate to the Project tab and create a Project with a logical name(JavaAzureFunction in this case)

...

Anchor
SourceControl
SourceControl
Source Control

Configure the Source SCM repository under Source Control as shown below.

...

For detailed steps of Source Control configuration please refer to Configure Source Control in FlexDeploy

Project Properties

...

  1. To configure Project specific settings one can navigate to the Project Configuration tab as shown above.

  2. Next, select the PROPERTIES option from the left-hand pane.

  3. To deploy a Function to Azure Function App, the first two mandatory properties are the Function App Name and Resource Group Name. These need to be configured under Project properties.

  4. Remote Build: This flag is applicable in case we want to upload the code to the Azure Function App backend and build it there itself(e.g: NET/node Js). We are creating the Java executable(jar) file explicitly as part of the build workflow, hence this checkbox can be left unchecked for this flow.

  5. Under Project properties, one also needs to provide the Application Setting/Connection String file names(if applicable).

  6. Show deployment log: Once deployment is completed, in case someone wants to verify the execution steps, they need to check the below checkbox under Project properties.

    In this case, the plugin will internally retrieve the deployment Id and will fetch the Deployment log(if available), and return the same as an Output variable.

    This is applicable only for Code archive deployment(not for docker image deployment.)

...

Application Setting and Connection String values will be updated against the Function Slot Name configured at the environment level. Refer to the Deploy to Slot section for further details.

Target Properties

Select Topology from the menu and then select Topology Overview from the left menu. You will see a table that has Instances as the rows and Environments as the columns with colored circles representing the Environment Instance. Color coding represents:

...

Anchor
Deploytoslot
Deploytoslot
Deploy to Slot

Azure Function App default slot is production. However, one can configure multiple slots and deploy Functions on those slots inside Function App. Function Slot Name is a mandatory field, where the code needs to deploy.

...

executeFunctionAppSlotSwap operation can be used to perform the slot swap.

Build Execution

For detailed steps on how to initiate Build Azure Function, review artifacts, and ultimately deploy to Azure Function App please refer to Build and deploy execution through FlexDeploy

...