Download as pdf or txt
Download as pdf or txt
You are on page 1of 36

How-to create a CI/CD Pipeline using Azure

DevOps

Exported by obd-svc ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

• Introduction
• Scope
• Audience
• Modules/Plugin Versions
• How-To
• Azure DevOps Configuration
• Variable Groups
• Process
• Secure Files
• Process
• Build Pipeline Configuration
• Build Pipeline (from develop branch)
• Process
• Build Pipeline (from master branch)
• Process
• Maven Release Plugin Configuration
• Running the master branch build pipeline
• Release pipeline configuration
• Executing the Release Pipeline

Exported by obd-svc - 2 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

1 Introduction
The purpose of the following article is to describe the step by step process for implementing a basic CI/CD
Pipeline using the Mule Maven Plugin as well as the Maven Release Plugin in Azure DevOps.

Process overview:
On merge/commit over the "develop" branch, a job is executed and the generated
artifact is deployed in DEV environment.
On merge/commit over the "master" branch, a job is executed for releasing a new version
of the application. The generated artifact is deployed to either Anypoint Exchange and
the Azure Binary Repository (not a SNAPSHOT). The generated artifact can then be
promoted to TEST and PROD environment.

 The instructions in this article might not work on different versions of the product.
If there are issues with the approach in the article, please provide feedback. If you experience any
issues with Microsoft Azure DevOps
or any non-MuleSoft related products, please refer to the relevant vendor's documentation or
customer support.

 The scope / complexity of a CI/CD Pipeline might vary depending on several factors. This should
not be taken as a silver bullet. The main goal is to show different aspects that need to be
considered and serve as a guideline for Azure DevOps configuration.

Exported by obd-svc - 3 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

Exported by obd-svc - 4 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

2 Scope
CI/CD Pipeline configuration using Azure DevOps.

Exported by obd-svc - 5 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

3 Audience
• Application / Operator Admin
• C4E Architects / Architects
• C4E Core Developers / Developers

Exported by obd-svc - 6 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

4 Modules/Plugin Versions
As a reference, here is the list of Modules/Plugins Versions used for writing the article.
Mule Runtime 4.X
Maven Release Plugin2.5.3
Mule Maven Plugin 3.3.5

Exported by obd-svc - 7 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

5 How-To

5.1 Azure DevOps Configuration

5.1.1 Variable Groups


Variable Groups are frequently used to store values that are desirable to make available across the
pipelines. Additionally, they can be used to store secrets and credentials that are going to be needed into
our build and release pipelines. We are going to create the following variable groups:
• Azure DevOps Mule Deployer:
• Anypoint Platform Username/Password of a non-federated user which has the
Exchange Contributors and Cloudhub Admin role of each of the configured
environments.
• Business Group ID where the applications are going to be deployed.
• Anypoint Platform <environment>:
• For each environment, the environment name, the client id and client secret.

Process
1. Log into Azure DevOps, select your Project and go to Pipelines → Library:

Exported by obd-svc - 8 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

2. Create a new Variable Group, assign a name/description and add the required variables as
follows:

Exported by obd-svc - 9 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

Note: Using the "Change variable type to secret" is very useful for sensitive data.

3. Verify the correct configuration of each Variable Group.

5.1.2 Secure Files


Secure Files can be used to encrypt valuable resources that will be needed during the build and release
pipelines. In this case, we are going to upload two files into the Secure Files Library.
• The Maven settings.xml file containing:
• Mulesoft Enterprise Repository Nexus Credentials.
• Mule Exchange and Anypoint Exchange v2 repositories.

Exported by obd-svc - 10 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

• GIT Repository Credentials (this is going to be used by the Maven Release Plugin).

• A Fake pom.xml file that is going to be used during the release pipeline to deploy the
generated artifact. This consists of a typical Maven pom.xml file for Mule Applications
containing the Mule Maven Plugin configuration of your deployment model. E.g: CloudHub
Deployment Reference.

Exported by obd-svc - 11 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

pom.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://
maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
 
 
<groupId>com.mulesoft.services</groupId>
<artifactId>services-azure-devops-mule-deployer</artifactId>
<version>1.0.0</version>
<packaging>mule-application</packaging>
 
<name>services-azure-devops-mule-deployer</name>
 
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
<app.runtime>4.2.2</app.runtime>
<mule.maven.plugin.version>3.3.5</mule.maven.plugin.version>
</properties>
 
<build>
<plugins>
<plugin>
<groupId>org.mule.tools.maven</groupId>
<artifactId>mule-maven-plugin</artifactId>
<version>${mule.maven.plugin.version}</version>
<extensions>true</extensions>
<configuration>
<cloudHubDeployment>
<uri>https://anypoint.mulesoft.com</uri>
<muleVersion>${app.runtime}</muleVersion>
<username>${anypoint.account.username}</username>
<password>${anypoint.account.password}</password>
<applicationName>${cloudhub.application.name}</applicationName>
<environment>${environment}</environment>
<businessGroupId>${business.group.id}</businessGroupId>
<workers>1</workers>
<workerType>MICRO</workerType>
<artifact>${artifact}</artifact>
<properties>
<anypoint.platform.client_id>${anypoint.platform.client.id}
</anypoint.platform.client_id>
<anypoint.platform.client_secret>$
{anypoint.platform.client.secret}</anypoint.platform.client_secret>
<mule.env>${environment}</mule.env>

Exported by obd-svc - 12 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

</properties>
</cloudHubDeployment>
</configuration>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>mulesoft-releases</id>
<name>mulesoft release repository</name>
<layout>default</layout>
<url>https://repository.mulesoft.org/releases/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>

Process
1. Go to Pipeline → Library → Secure files.
2. Click the Add Secure File, and browse into your file systems the items that need to be
uploaded.

Exported by obd-svc - 13 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

5.2 Build Pipeline Configuration


I am going to asume that developers work over feature branches which are get from a develop branch.
When there is a merge into the develop branch, a build pipeline is going to be executed which will deploy
the artifact into the DEV environment for testing purposes only. This pipeline should be run with some
regularity and it's not expected to keep these builds as this basically consists of a developer checking that
the project works as it is expected.
Additionally, we are going to create a separate pipeline used as part of the release process. The idea is to
execute this pipeline when the team reaches a milestone of some sort. This pipeline is going to be
triggered from the master branch, release a new version of the application and deploy the generated
artifact into Anypoint Exchange in case an easy rollback is needed from Runtime Manager. As part of this
process, the artifact is also copied into the Azure Staging Directory.

5.2.1 Build Pipeline (from develop branch)


High-level, this pipeline contains the following tasks:
1. Get sources from develop branch (checkout GIT project).
2. Download the settings.xml secured file from Azure library.
3. Execute the Maven test phase.
4. Execute the Maven package phase.
5. Deploy the generated artifact into the DEV environment (using the Mule Maven Plugin).

Process
1. Log into Azure DevOps, select your Project and go to Pipelines → Pipelines → New
pipeline.

Exported by obd-svc - 14 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

2. Switch to the Classic Editor view.

3. Select a source (e.g.: Azure Repos Git), the project / repository and finally set the default
branch to develop based on the previous explanation. Once finished, click the continue
button.

Exported by obd-svc - 15 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

4. Among the available templates choose Maven and click the Apply button.

5. Edit pipeline name and delete the Copy Files and Publish Artifact tasks. After saving your
changes the pipeline should looks as follows.

6. Click the Add task button, search for "Download secure file" and click the Add button.

7. Drag the task to the top of the pipeline and rename as "Download settings.xml". Finally,
select the "settings.xml" file from the drop-down list.

Exported by obd-svc - 16 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

8. Click the Add task button for adding other two Maven tasks. You should have a total of
three; one for each Maven build lifecycle phase (Test, Package and Deploy).
9. Maven Test Phase Configuration.
a. Select the first Maven Task and rename as Test.
b. Set the goal to:

clean test

c. In the options set a reference to the downloaded settings.xml file from the Azure
Library:

-s $(Agent.TempDirectory)/settings.xml

d. Check the Publish to Azure Pipelines checkbox.

10. Maven Package Phase Configuration.


a. Select the second Maven Task and rename to Package.

Exported by obd-svc - 17 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

b. Set the goal to:

clean package -DskipTests

c. Set the options to:

-s $(Agent.TempDirectory)/settings.xml

d. Uncheck Publish to Azure Pipelines.

11. Mule Maven Deploy Configuration (to DEV environment).


a. Select the third Maven Task and rename to Deploy Dev.
b. Set the goal to:

clean package deploy -DskipTests -DmuleDeploy

c. Set the options to:

-s $(Agent.TempDirectory)/settings.xml -Danypoint.account.username=$
(MuleDeployerUsername) -Danypoint.account.password=$(MuleDeployerPassword)
-Dbusiness.group.id=$(BusinessGroupId) -Danypoint.platform.client.id=$(ClientId)
-Danypoint.platform.client.secret=$(ClientSecret) -Dcloudhub.application.name=$
(Environment)-contacts-sapi-v1 -Denvironment=$(Environment)

Note: These parameters will depend on your deployment model. This example is
based on the Deploy to CloudHub configuration. For further information please
refer to Mule Maven Plugin configuration.

Notice that the parameters configured in this step belongs to the ones added into
the Variable Groups as part of the initial configuration. 

Exported by obd-svc - 18 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

d. Uncheck Publish to Azure Pipelines and click the Save & queue → Save button.

12. (OPTIONAL) In order to prevent executions of this pipeline from a different branch (e.g.:
master), on each of the configured tasks (Download settings.xml, Test, Package and
Deploy) you can add the following configuration so that the task executes only when the
previous task finish successfully and the pipeline has been triggered from the develop
branch:
a. Expand Control Options.
b. Set Run this task to Custom conditions.
c. Set Custom condition to:

and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/develop'))

Ref.: Specify Conditions

d.  Repeat for the Test, Package and Deploy Dev Maven tasks.

Exported by obd-svc - 19 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

13. Pipeline Variables Configuration.


a. From the build pipeline view, select Variables → Variables Groups → Link
variable group.

b. Link the following variable groups: Anypoint Platform DEV Variables and Azure
DevOps Mule Deployer which contains the required variables for the Development
deployment.

c. Finally, click the Save & Queue → Save button.


14. From the build pipeline view, select the Triggers tab and check the Enable continuous
integration option. Set the branch filters to develop.

15. Finally click the Save & Queue → Save button.

Exported by obd-svc - 20 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

5.2.2 Build Pipeline (from master branch)


The first part of the build pipeline is pretty similar to the one we have seen before. This means that we are
going to get a stable version of the code (in this case from the master branch) and we are going to test
and package using the Maven task. Additionally, we are adding the use of the Maven Release Plugin which
simplifies the release of project artifacts and to update the project's SCM accordingly. We are also going
to store the generated artifact into Azure DevOps in order to use in the release pipeline to promote the
artifact across the environments (e.g: TEST and PROD) and also upload it into Anypoint Exchange.
High-level, this pipeline contains the following tasks:
1. Get sources from master branch (checkout GIT project).
2. Download the settings.xml secured file from Azure library.
3. Execute the Maven test phase.
4. Execute the Maven package phase.
5. Execute the release:prepare goal (using the Maven Release Plugin).
6. Execute the release:perform goal (using the Maven Release Plugin).
7. Copy build artifact to staging directory.
8. Publish the artifact to Azure Pipelines (container).

Process
1. Log into Azure DevOps, select your Project and go to Pipelines → Pipelines → New
pipeline.
2. Switch to the Classic Editor view.
3. Select a source (e.g.: Azure Repos Git), the project / repository and finally set the default
branch to master based on the previous explanation. Once finished, click the
continue button.
4. Among the available templates choose Maven and click the Apply button.
5. Edit pipeline name.
6. Click the Add task button, search for "Download secure file" and click the Add button.
7. Drag the task to the top of the pipeline and rename as "Download settings.xml". Finally,
select the "settings.xml" file from the drop-down list.
8. Click the Add task button for adding other three Maven tasks. You should have a total of
four; one for each Maven task (Test, Package, Release Prepare and Release Perform).

Exported by obd-svc - 21 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

9. Configure the Maven Test Phase (as you did in the previous pipeline).
10. Configure the Maven Package Phase (as you did in the previous pipeline).

11. Set GIT identity. As the Maven Release Plugin runs SCM commands in the background (e.g:
to update artifact version in the POM file, creating a tag, etc); we are going to use a script
to enable the use of GIT commands.
a. Click the Add task button, search for Bash script and place immediate after the
Maven Package task. 

Exported by obd-svc - 22 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

b. Set the Display name to Set GIT identity.


c. Set as inline type and use the following commands to configure the GIT identity.

git config --global user.email "you@example.com"


git config --global user.name "Your Name"
git checkout master

Ref.: Run Git commands in a script


12. Maven release:prepare goal configuration.
a. Select the fourth Maven task and rename as Release Prepare.
b. Set the goal to:

release:prepare --batch-mode

c. Set the options to:

-s $(Agent.TempDirectory)/settings.xml -Dmaven.test.skip=true -DskipTests

Exported by obd-svc - 23 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

d. Finally, uncheck the Publish to Azure Pipelines option.

13. Maven release:perform goal configuration.


a. Select the last Maven task and rename as Release Perform.
b. Set the goal to:

release:perform

c. Set the options to:

-s $(Agent.TempDirectory)/settings.xml -Dmaven.test.skip=true -DskipTests

d. Finally, uncheck the Publish to Azure Pipelines option.

Exported by obd-svc - 24 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

14. (OPTIONAL) In order to prevent executions of this pipeline from a different branch (e.g.:
develop), on each of the configured tasks you can add the following configuration so that
the task executes only when the previous task finish successfully and the pipeline has been
triggered from the master branch:
a. Expand Control Options.
b. Set Run this task to Custom conditions.
c. Set Custom condition to:

and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))

Ref.: Specify Conditions

d. Repeat for all the other tasks in the pipeline.


15. Finally, click the Save & Queue → Save button.
Note: In order to use the Maven Release Plugin the following configuration is needed in your Mule
Application.

Ref.: Maven Release Plugin.


Ref.: Release.

Maven Release Plugin Configuration


When using the release:prepare goal, we need to supply Maven with the information regarding the
current location of the project's SCM. This information can be defined and maintained within the project's
pom.xml. Additionally we are going to add the required configuration for publishing the generated asset
into Anypoint Exchange.
1. Modify the groupId of the Maven project to be your Organization ID in your project's
POM file. Also make sure the artifactId is unique and doesn't overlap with other asset
already published into Anypoint Exchange:

Exported by obd-svc - 25 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

<groupId>ORGANIZATION_ID</groupId>
<artifactId>MY-APP-IMPL</artifactId>

2. Add the Maven facade as a repository in the distribution management section of the
project's POM file (the repository credentials needs to be configured in the settings.xml
file uploaded into the Azure DevOps Library):

<distributionManagement>
<repository>
<id>MuleExchangeRepository</id>
<name>MuleExchangeRepository</name>
<url>https://maven.anypoint.mulesoft.com/api/v1/organizations/
ORGANIZATION_ID/maven</url>
<layout>default</layout>
</repository>
</distributionManagement>

3. Update the POM properties with the SCM ID (the SCM credentials need to also be
configured in the settings.xml file that was uploaded  into the Azure DevOps Library)
and the Maven Release Plugin Version (e.g.: 2.5.3):

<properties>
<!-- other properties here -->
<maven.release.plugin.version>2.5.3</maven.release.plugin.version>
<project.scm.id>AZURE_GIT_REPO_ID</project.scm.id>
</properties>

4. Add the reference to the project SCM repository (e.g.: Azure GIT repo):

<scm>
<connection>scm:git:GIT_REPO_URL</connection>
<developerConnection>scm:git:GIT_REPO_URL</developerConnection>
<tag>HEAD</tag>
</scm>

5. Add the Maven Release Plugin configuration to the project's POM file:

Exported by obd-svc - 26 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

<build>
<plugins>
<!-- other plugins -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${maven.release.plugin.version}</version>
</plugin>
</plugins>
</build>

Running the master branch build pipeline


1. In order to run the build pipeline, go to the related menu option and search for it under
the All tab.

2. Click the Run pipeline button.

3. Once the build execution finishes successfully, go to Repos → Commit and select the
master branch. Check that:
a. A tag has been created for the released version.
b. The version in the pom.xml file has been increased for the next release.

Exported by obd-svc - 27 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

4. Log into Anypoint Platform and go to Anypoint Exchange. Check that the build artifact
has been successfully uploaded into Exchange. In order to do that, you need to update the
following URL with the ORGANIZATION_ID and ARTIFACT_ID values in the pom.xml file. 

https://anypoint.mulesoft.com/exchange/ORGANIZATION_ID/ARTIFACT_ID/

5.3 Release pipeline configuration


Next step is configuring the release pipeline in order to promote the generated artifact to the other
environments. In this case, we are going to pick the artifact from Azure staging directory and deploy to
TEST and PROD using the Mule Maven Plugin.

Exported by obd-svc - 28 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

1. Log into Azure DevOps, go to the Releases menu and click New → New release pipeline.

2. Select the Empty job option.


3. Give a name to the pipeline.
4. Rename the default stage with the first environment where you are going to promote
your artifact. E.g.: TEST.

5. Click the Artifacts → Add button.


a. Set the Source type to Build.
b. Select the build pipeline from master created in the previous section as source.
c. Set Default Version to Latest.
d. Click add button to finish.

6. Nest step is configuring a trigger for the pipeline. Click on the Continuos deployment
trigger button and enable the trigger in order to create a new release every time a new

Exported by obd-svc - 29 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

build is available.

7. Finally, we need to add the required Maven tasks in order to deploy the Mule Application
into TEST environment.
a. Edit the pre-deployment condition and set the trigger to Manual only.

b. Click on the 1 job, 0 task link into the stage activity of your pre-prod environment
(e.g.: TEST).

Exported by obd-svc - 30 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

c. Click on the Add task button and add a Download secure file task.
d. Set the Display name to Download pom.xml file.
e. Select the pom.xml file from the dropdown list. This is the secured file that was
previously uploaded to Azure Library.

f. Add a bash script task to the pipeline. This is needed to pick the artifact that was
generated in the build pipeline triggered from master branch which is stored into
the Azure staging directory.
g. Set the Display name to Find artifact.
h. Set the script type to inline.
i. Copy and paste the following lines.

cd $(Release.PrimaryArtifactSourceAlias)/drop/target
ls -la
artifact=$(ls | grep *.jar)
echo "##vso[task.setvariable variable=ARTIFACT;]$artifact"

Exported by obd-svc - 31 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

j. Add a Maven task and rename to Deploy.


k. Set the path to the POM file as follows:

$(Agent.TempDirectory)/pom.xml

l.  Set the goal to:

mule:deploy

m. In the options box, copy and paste the following lines:

-DskipTests -DmuleDeploy -Danypoint.account.username=$(MuleDeployerUsername)


-Danypoint.account.password=$(MuleDeployerPassword) -Dbusiness.group.id=$
(BusinessGroupId) -Danypoint.platform.client.id=$(ClientId)
-Dcloudhub.application.name=$(Environment)-contacts-sapi-v1 -Denvironment=$
(Environment) -Danypoint.platform.client.secret=$(ClientSecret) -Dartifact=$
(Agent.ReleaseDirectory)\$(Release.PrimaryArtifactSourceAlias)\drop\target\$
(ARTIFACT)

Exported by obd-svc - 32 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

n. Uncheck the Publish to Azure Pipelines box and click the Save button.

o. Select Variables → Variable groups → Link variable group and link Azure DevOps
Mule Deployer and Anypoint Platform TEST Variables to the current stage. E.g.:
TEST
Click the Save button and go back to Pipeline tab.

8. The stage for your production environment can be cloned from the previous one. For the
purpose of the example I've set a Manual only trigger.

Exported by obd-svc - 33 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

9. Click on the View stage tasks link to edit the Variable groups (in this case for the PROD
environment).

10. Update the variable groups as follows:


a. Azure DevOps Mule Deployer should be link to all the environments. E.g.: TEST,
PROD
b. Anypoint Platform <ENVIRONMENT> Variables to the specific one.

Exported by obd-svc - 34 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

11. Click the Save button to finish.

5.3.1 Executing the Release Pipeline


With current configuration, each time a build pipeline is executed from the master branch, the recently
configured release will be triggered and will be ready for deploying our application to TEST and PROD.
1. Go to Azure DevOps → Pipeline → Releases.
2. Check a new release entry has been created ready for promoting the artifact to TEST and
PROD environment.

3. Select the specific release. E.g.: Release-5


4. Click the Deploy option, select the stage and finally press the Deploy button.

Exported by obd-svc - 35 - ©2018 MuleSoft, Inc.


How-to create a CI/CD Pipeline using Azure
DevOps

5. Verify the artifact has successfully deployed into the specific environment.

6. Finally, you can move forward with the deployment into PROD.

Exported by obd-svc - 36 - ©2018 MuleSoft, Inc.

You might also like