DEV Community

zhengchang907
zhengchang907

Posted on

CICD experience: Source-2-image and deploy to Oracle WebLogic Server on AKS

My Workflow

Azure-Samples/cargotracker-azure#updateCargoTracker.yml

Submission Category:

Maintainer Must-Haves

Yaml File or Link to Code

GitHub logo Azure-Samples / cargotracker-azure

Azure-specific downstream for Cargo Tracker Jakarta EE sample app. The project demonstrates how you can develop applications with Jakarta EE using widely adopted architectural best practices like Domain-Driven Design (DDD).

Eclipse Cargo Tracker - Applied Domain-Driven Design Blueprints for Jakarta EE

The project demonstrates how you can develop applications with Jakarta EE using widely adopted architectural best practices like Domain-Driven Design (DDD). The project is directly based on the well known original Java DDD sample application developed by DDD pioneer Eric Evans' company Domain Language and the Swedish software consulting company Citerus. The cargo example actually comes from Eric Evans' seminal book on DDD. The original application is written in Spring Hibernate and Jetty whereas the application is built on Jakarta EE.

The application is an end-to-end system for keeping track of shipping cargo. It has several interfaces described in the following sections.

For further details on the project, please visit: https://eclipse-ee4j.github.io/cargotracker/.

A slide deck introducing the fundamentals of the project is available on the official Eclipse Foundation Jakarta EE SlideShare account.

Cargo Tracker cover

Getting Started

The project website has…

Additional Resources / Info

Story behind it

Real world Java EE on Azure requires industrial strength CI/CD. My team and I started building an example illustrating the path of modernizing a traditional Java EE application(WebLogic + PostgreSQL).

We implemented a GitHub Actions workflow that compiles the Eclipse Cargo Tracker application source, builds the Docker image with help from the WebLogic Kubernetes Operator and uploads it an Azure Container Registry. This image is then deployed to a WebLogic on Azure Kubernetes Service (AKS) environment as part of the CI/CD experience.

This workflow serves as an end-to-end test for an Azure Marketplace offer that lets you easily deploy WebLogic Server to Azure Kubernetes Service. To learn more about this and other offers for Java EE on Azure, please visit < https://aka.ms/wls-aks-contactme >.

What’s interesting in our workflow

We leveraged many existing GitHub Actions such as actions/checkout, azure/CLI and azure/login to build our pipeline. The built-in support for bash scripts provides all the flexibilities we needed to complete it.

Our pipeline contains the following critical steps:

This pipeline takes many inputs because it requires all the Azure resources are created & configured before running it. We also have another pipeline Azure-Samples/cargotracker-azure#setupWlsAks.yml to setup the required environment, these two pipelines combine together to provide a more complete DevOps experience.

A brief introduction to our work

Oracle WebLogic Server is a scalable, enterprise-ready Java application server. We are a team from Microsoft that works on bringing the Oracle WebLogic Server experience on Azure which includes:

  • WebLogic Server on AKS: The WebLogic Server on AKS offer automates provisioning an AKS cluster, the WebLogic Kubernetes Operator, WLS Docker images and the Azure Container Registry (ACR). The offer also supports configuring load balancing with Azure App Gateway or the Azure Load Balancer, easing database connectivity, publishing metrics to Azure Monitor as well as mounting Azure Files as Kubernetes Persistent Volumes. For more on this offer, please visit < https://aka.ms/wlsaks >.

  • WebLogic Server on Virtual Machines: The WebLogic Server on virtual machines offers automate provisioning virtual network, storage, and Linux resources, installing WLS, setting up security with a network security group, easing database connectivity, configuring load-balancing with App Gateway or Oracle HTTP Server, connecting to Azure Active Directory, enabling centralized logging via ELK as well as integrating distributed caching with Oracle Coherence. For more on this offer, please visit < https://aka.ms/wlscluster >.

If you want to learn more about our offers or work closely on your migration scenarios with us, just go to this CONTACT ME page and hit the button! Program managers, architects and engineers will reach back out to you shortly and initiate collaboration!

Reference

GitHub Actions makes it easy to develop a lightweight but powerful CI/CD experience for your code from GitHub.

GitHub Actions for Azure are developed by Microsoft and designed to be used with Azure.

Eclipse Cargo Tracker is a project demonstrates how you can develop applications with Jakarta EE using widely adopted architectural best practices like Domain-Driven Design (DDD).

Playwright is built to enable cross-browser web automation. And it can be easily introduced into a Java project using Maven.

Discussion (0)