Skip to content

CI/CD Pipeline

⚙️ DevOps & Multi-Arch CI/CD Pipeline

The project utilizes a fully automated "Push-Based" Deployment Pipeline powered by GitHub Actions. The pipeline is specifically engineered to handle the complexity of a heterogeneous cluster (Oracle ARM64 workers + AWS x86 Gateway) by seamlessly producing multi-architecture Docker images.

🔄 Pipeline Workflow

Every commit to the prod branch triggers the following workflow:

  1. Environment Setup (Cross-Platform):
  2. Sets up Java 21 (Temurin) for compilation.
  3. Installs QEMU Emulators to enable building ARM64 images on standard GitHub Runners.
  4. Initializes Docker Buildx for advanced multi-platform support.

  5. Build & Test:

  6. Runs unit tests and compiles JAR artifacts using Maven.
  7. mvn clean package -DskipTests

  8. Multi-Arch Containerization:

  9. Instead of standard builds, it constructs a single Docker image manifest capable of running on both Intel and ARM processors.
  10. Target Platforms: linux/amd64, linux/arm64
  11. Registry: Pushes images to Docker Hub repositories.

  12. Production Deployment (Push-Based):

  13. The pipeline establishes a secure SSH Connection to the Oracle Master Node.
  14. It executes a command to trigger a Rolling Update, ensuring the cluster pulls the new image digests without downtime.

🚀 Deployment Strategy

The pipeline executes the following logic remotely on the Master Node to ensure service continuity:

  • Executed via ssh-action on Oracle Master Node
  • sudo kubectl rollout restart deployment -n take-my-order