When evaluating software, it's easy to overlook an option because it doesn't list the specific stack you use. However, just because it isn't listed, doesn't mean it isn't supported.
For Java-based applications, Octopus Deploy includes specific steps to deploy to Tomcat and Wildfly (JBoss). Those are the two most popular options but there are more web server technologies available.
Web servers such as Payara and IBM WebSphere Liberty will automatically deploy an application when it's placed in a specific folder. Writing a step template for those specific server types isn't necessary.
In this post, I'll demonstrate how to deploy the PetClinic application to an IBM WebSphere Liberty web server.
IBM WebSphere Liberty
IBM WebSphere Liberty is a web server technology for Java-based applications developed by IBM. This server has both paid and open source variants. Both variants have the same automatic application deployment option available when the application is placed within a specific folder for the server. In addition, Liberty is available for both Windows and Linux operating systems. For this post, I'm using Windows.
To install Liberty, simply download and extract. Other than installing Java, that's all that is required for set up.
Once you have the server software extracted to a folder, open a terminal and navigate to the
bin folder. In my case, it was
Once there, run the following command (the command is the same whether you're on Windows or Linux):
server create <Name>
This will create a folder in the
usr\servers folder with whatever name you gave it. I called mine petclinic (
Run the following command to start the server:
server start <Name>
Finish by installing the Octopus Tentacle on your Liberty server.
This post assumes you have some familiarity with Octopus and will not cover Tentacle installation.
For this demonstration, I'll be deploying the Java PetClinic application. This application uses a MySQL database back-end, so my deployment process will include steps to create the database (if it doesn't exist), deploy database changes, and finally deploy the Java application to IBM WebSphere Liberty.
The deployment process consists of the following steps:
- MySQL: Create Database If Not Exists
- MySQL: Create User If Not Exists
- Flyway Info from a referenced package
- DBA Approval (manual intervention step)
- Flyway migrate from a referenced package
- Deploy PetClinic to WebSphere Liberty
This post focuses on deploying to IBM WebSphere Liberty and will cover just that step.
Deploy a Java Archive
Deploying to IBM WebSphere Liberty uses the
Deploy a Java Archive built-in step of Octopus Deploy. Edit your process and click ADD STEP and select Deploy Java Archive:
Select the role and package you wish to deploy and scroll to the Deployment section. The selected package will contain the version number of the package.
If you want the name to be more useful, fill in the
Deployed package file name. In my case, I wanted the environment name to be included so I used
As mentioned, IBM WebSphere Liberty will automatically deploy an application if placed in a specific folder called dropins. The dropins folder is located directly off the server folder that we created earlier;
To place our file in this specific folder, we'll need to enable the Use custom deployment directory feature and specify where to place it:
The PetClinic application needs the
WEB-INF/classes/spring/datasource-config.xml file updated with the database server, username, and password details. To do this, we'll use the Structured Configuration Variables feature. Scroll to the top of the step and click CONFIGURE FEATURES. Enable the Structured Configuration Variables feature and click OK:
Scroll to the Structured Configuration Variables section that was just added to the form and enter
WEB-INF/classes/spring/datasource-config.xml for the value:
With this feature configured, define the following project variables:
//*:property[@name='password']/@value: Password for the user account
//*:property[@name='username']/@value: Username for MySQL connection
//*:property[@name='url']/@value: JDBC connection string to MySQL
With our process defined, we can now deploy our application to our server. When the deployment is complete, you should see the following output for the deployment of the PetClinic web application:
The default port for WebSphere Liberty is
9080. Navigation to
http://websphere1:9080/petclinic_Development shows that our application has been deployed:
In this post I demonstrated how easy it is to deploy a Java-based application to an IBM WebSphere Liberty web server. I hope this is helpful.