Mule Application Deployment using TeamCity

  • TeamCity is a build management and continuous integration server from JetBrains.
  • It provides several ways to reuse the settings of the parent project to subproject.
  • For a single build, Teamcity can take source code from two different VCS.
  • It can also detect builds which are hung.
  • For easy access, you can mark build.
  • We can run parallel builds simultaneously in different environments.
  • Formatted text can be set for Build status which makes the server perform some actions.
  • You can build docker images in separate steps with the extension to other runners (Gradle, Maven, etc.).
  • Testers can be replaced with agents.
  • Here is how Mule flow looks like
  • Here is xml File
<?xml version="1.0" encoding="UTF-8"?><mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="dd6bdb1d-aab0-4ca0-81d1-9ce208e7d371" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<flow name="deployment-demoFlow" doc:id="7e6054f0-c25d-461c-9db0-ba13f9e85fb9" >
<http:listener doc:name="Listener" doc:id="1710f78c-c002-4a78-8aec-0823cc307cd7" path="/deployment" config-ref="HTTP_Listener_config"/>
<ee:transform doc:name="Transform Message" doc:id="ff3c9737-4d43-4055-821a-de0095d0ceb0" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output text/plain
---
"Application Deployed Using CI/CD Pipeline"]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
</mule>
  • Add below fragments in pom.xml under project -> build -> plugins
<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>
<objectStoreV2>true</objectStoreV2>
<uri>https://anypoint.mulesoft.com/</uri>
<muleVersion>4.2.2</muleVersion>
<username>Change Me</username>
<password>Change Me</password>
<applicationName>deployment-demo-poc</applicationName>
<environment>Sandbox</environment>
<workerType>Micro</workerType>
<workers>1</workers>
<region>us-west-2</region>
</cloudHubDeployment>
</configuration>
<executions>
<execution>
<id>deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
  • us-east-1 — US East (N. Virginia)
  • us-west-2 — US West (Oregon)
  • eu-west-1 — EU (Ireland)
  • ap-southeast-2 — Asia Pacific (Sydney)
  • ap-southeast-1 — Asia Pacific (Singapore)
  • us-west-1 — US West (N. California)
  • eu-central-1 — EU (Frankfurt)
  • ap-northeast-1 — Asia Pacific (Tokyo)
  • eu-west-2 — EU (London)
  • ca-central-1 — Canada (Central)
  • sa-east-1 — South America (São Paulo)
  • us-east-2 — US East (Ohio)
  • MICRO(0.1 vCores)
  • SMALL (0.2 vCores),
  • MEDIUM (1 vCores)
  • LARGE (2 vCores)
  • XLARGE (4 vCores)
  • XXLARGE (8 vCores)
  • 4XLARGE (16 vCores)
  • Add below fragments in pom.xml under project -> build -> plugins
<build>
<plugins>
<plugin>
<groupId>org.mule.tools.maven</groupId>
<artifactId>mule-maven-plugin</artifactId>
<version>${mule.maven.plugin.version}</version>
<extensions>true</extensions>
<configuration>
<armDeployment>
<muleVersion>${app.runtime}</muleVersion>
<uri>https://anypoint.mulesoft.com</uri>
<target>Change Me</target>
<targetType>server</targetType>
<username>Change Me</username>
<password>Change Me</password>
<environment>Sandbox}</environment>
<properties>
<key>value</key>
</properties>
</armDeployment>
</configuration>
<executions>
<execution>
<id>deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
  • Commit the code in the SCM repository. In my case, its bitbucket.
  • Provide required information and click on “Log In”.
  • Click On “Create Project”.
  • Provide the source code management details. In my case, I am using bitbucket.
  • Click on “Proceed”.
  • Click on “Proceed”.
  • Click on “configure build steps manually”.
  • Click on “Add build step”.
  • Choose “Command Line”.
  • Fill the Information as shown below.
Step name: Clean and Install
Custom script: /opt/buildagent/tools/maven3_6/bin/mvn clean install
  • Click on “Save”.
  • Follow the steps for add build step and create one more step with below configuration.
Step name: Package and Deploy
Run: Custom script
Custom script: /opt/buildagent/tools/maven3_6/bin/mvn package deploy -DmuleDeploy
  • We are done with setup and can run the build by clicking on “Run” or else push some changes to github.
  • It will take some time to complete. We can see the progress by clicking on “Build Log”.
  • Click on “Overview”.
  • To see all previous builds click on “Build”. As of now, I have only one build executed.
  • If you want to change the build and update it, then click on “Edit Configuration Setting”.
  • You can change Version Control Setting, Steps, Triggers, etc.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

To Do Damage? (TDD)

How to easily change your file header text in Xcode

Know your test automation tools :Woking with Rest Assured

NU has many flavours — which one is for you?

Codenote — A Natural Programming Language Toolkit

READ/DOWNLOAD=$ Spark: The Definitive Guide: Big D

Median of a Binary Search Tree

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Apisero

Apisero

More from Medium

Selenium Automation TestFrame Work

AlexNet Architecture

Read Values from Formulas in Excel in Java

Server-side CRUD implementation using Koa