Atlassian Bamboo 6.8: Deployment of a Java Web Application to Tomcat Application Server
This tutorial will showcase on the Bamboo concepts for Build and Deployment of a Java web application to the Tomcat application server with the source code committed in the Bitbucket repository.
Atlassian Bamboo is a Continuous Integration (CI) and Continuous Deployment (CD) software.
It helps to automate the BUILDS of your software application and release management by creating the continuous delivery pipeline.
You can refer to the Series of DevOps Tutorials for more information on the CI/CD concept.
What You Will Learn:
- Bitbucket Repository and CI/CD flow
- Installing and Configuring the Bamboo Server
- Configuring Application links with Bitbucket server
- Understanding Bamboo Concepts
- Configure Stage
- Understanding Bamboo Agent
- Adding Build and Deploy stage/job/tasks
- Run Plan
- Triggers and Permissions
- Recommended Reading
- Bitbucket repository created and populated with a Java Maven Web Application.
- JDK 1.8 installed on the Build machine.
- Apache Maven installed on the Build machine and Maven Home/Path to the bin directory set.
- Tomcat 7.x or 8.x or 9.x installed on the deployment machine.
Bitbucket Repository and CI/CD flow
Given below is created the bitbucket repository that contains a Java Maven web project and will be used in Bamboo for CI and CD activities.
The flow of CI/CD showcased here. The code is developed and committed to Bitbucket and built/deployed to various environments running on Tomcat app server using Bamboo.
Installing and Configuring the Bamboo Server
To download, install and configure the Bamboo server in http://localhost:8085, please look at the online confluence page.
As we would be using the source code stored in the Bitbucket repository, we will need to provide and configure the Bitbucket server link in the Bamboo server.
Having logged in to Bamboo URL go to Administration -> Manage Apps -> Application Links. Add the Bitbucket server URL and click on the Create New Link. This will automatically create a reciprocal link in the Bitbucket server as well.
Bitbucket Server view of application link is created in the Administration settings.
Once the application links are configured, the Bitbucket repositories will be available to be selected in the Bamboo project configuration.
Understanding Bamboo Concepts
As you have seen the flow for CI /CD in the previous section, Bamboo uses the concepts of Project, Plan, Stages, and Jobs to accomplish the activities of build and Deploy.
Project: Typically every project teams work on software delivery of multiple applications. The project created in Bamboo is for every application which the team works on.
In order to create a Bamboo project, login to the Bamboo URL and click on Create -> Create Project.
Enter a name and description. Click on Save.
Plan: As the project is created, the next step is to create a Plan. A Plan contains information about the version control repository. In this case, our Java Maven web project is stored in the Bitbucket. Few other details like Access control for the plan are also mentioned as a part of creating the Plan.
Click on Create Plan and enter the details as shown below. The Bitbucket repository to be linked to the plan is also available once both the tools are linked.
Once the above details are entered, click on Configure plan.
Click on Create for now.
Click on Action -> Configure Plan once the plan is created. We will now proceed to create Stages and Tasks.
The following Plan configuration screen that contains a Default Stage in which we will create the Job followed by the grouping of tasks within it comes up.
Stage: All the plans created will initially contain a Default stage as shown in the above screen. Example: of a stage can be a Build stage or a Deploy stage. Each stage will contain its own job with the grouping of tasks which is the smallest level of work done for build or deploy.
The stages run sequentially and every stage must execute successfully before moving on to the next stage.
Jobs: Jobs contain one or more tasks which are run in parallel.
Tasks: Tasks are a part of a job. Example: Jobs could be a maven build or deploy to the Tomcat app server.
All of the above definitions can be put in the following diagram for execution within a plan and can be used as shown below.
In the Plan Configuration screen, Click on Actions -> Configure Stage to rename the definition.
Modify the Stage name and click on Save. I would be creating only one stage for my Build and Deploy. Teams are free to create multiple stages to segregate the same. Before we create the jobs and tasks, we need to install a remote agent for build and deployment which is described in the next section.
Understanding Bamboo Agent
If you look at the CI/CD workflow in section 2, you will need to perform Build on a server specified and deploy the application on multiple different environments. Hence for the Bamboo server to identify and connect to this build & deploy machines and run specific jobs on it, we will need to run an Agent service on these machines.
In Bamboo, there are two types of Agent:
- Local Agents run on the Bamboo server which in my view should not be used to a large extent due to load and performance issues of the Bamboo server.
- Remote Agents run on the machines other than the Bamboo server.
Capabilities are then tagged to the Agents to run specific Jobs defined in the plan.
Install a remote agent
(i) From the Administration menu, select Overview and download the agent on the remote machine.
(ii) Under Agents category click on Install remote agent.
(iii) Download the Remote Agent JAR file and run the command as shown below.
By default, the data from version control will be downloaded to the UserHomeDirectory/bamboo-agent-home directory. In case a new directory needs to be specified then the option –Dbamboo.home=<New folder> can be used.
The command will be run as follows to install and enable the agent.
The agent is now installed and we need to approve the agent. Go to the URL mentioned at the end of the window and approve the agent to be enabled.
The URL to be used is as follows as per the instructions in the above screen.
Select the remote agent and click on Approve Access.
The remote agent is now in an approved state and we can proceed to add capabilities such as build instructions to run Maven build etc.
The remote agent is now online and is shown in the TAB.
Click on the agent to add a Maven capability which will be used later in the Plan.
Click on Add capability. As we will be performing a Maven build add as shown.
Click on Add. The capability is now added to the remote Agent.
Adding Build and Deploy stage/job/tasks
Back in the plan configuration screen, we will create the following 2 stages in a single plan.
#1) Create the Build Stage and rename the Default job to Maven build in the Job details TAB. Click Save.
Click on the Tasks TAB and add the Maven build task.
Add the Maven build details like Goal and Working sub-directory as shown. Click on Save once done.
For this Job go to the Artifacts TAB and create an artifact definition to make the WAR file generated out of the Maven build to be available in the Deploy stage which will be created next. Click Create once done.
#2) Click on Plan configuration and create a Deploy stage.
In the Deploy Stage, add a job to deploy the war file to Tomcat. Click on Add job and select Create a new job.
Click on Create job. Click on this job to add a task. The default task Source Code Checkout can be deleted. Add the Deploy Tomcat task and configure the task.
Click Save. Go to the Artifacts TAB for this job and add the dependency which was created in the Build stage. Click on Create dependency.
Click on Create. The dependency is added to this job so that the WAR file will be successfully deployed.
So here comes the moment. As the plan is completely defined to perform Build and Deploy tasks, we can now Run the plan.
Click on Run -> Run Plan.
The plan run is successful and the WAR file is deployed successfully to the Tomcat app server.
Triggers and Permissions
Additionally, for the plan, we can add triggers for an automatic run of the plan without any manual intervention. Triggers include the following options.
In the Plan configuration click on Triggers -> Add Trigger
The most preferred option would be to schedule the execution of the plan.
Project level permissions can also be added in the Plan Configuration -> Permissions.
In this tutorial, we have seen how Atlassian Bamboo can be used for CI/CD activities for a Maven Web application. The tool can be further configured to integrate with Sonarqube for code analysis, Artifactory to store version of the binaries, Ansible, etc.
Most importantly its seamless integration with Bitbucket is definitely simple and easier too. This tutorial will be a perfect guide for those who are learning CIC/CD for the first time using Atlassian tools.
Hope you enjoyed this informative tutorial on Atlassian Bamboo!!