Skip to main content

Jenkins Deployment Process

Overview

This document outlines the Jenkins CI/CD pipeline processes for deploying SMART360 to production. The deployment process is split into two main categories: Backend microservices and SMART360 Frontend application.

Repository Management

Central Control Repository: All production deployments are managed from the Bifrost GitHub repository, which contains:

  • Jenkins pipeline configurations
  • Task definitions for all microservices
  • Deployment scripts and configurations

Backend Deployment Process

Pipeline Overview

Each of the 9 microservices has its own dedicated Jenkins pipeline and task definition for independent deployment control.

Pipeline Stages

1. Checkout

  • Pull latest code from the respective microservice repository
  • Checkout specific branch/commit for deployment

2. Build and Push Docker Images to ECR

  • Build Docker image for the microservice
  • Tag image with appropriate version/commit hash
  • Push image to Amazon ECR (Elastic Container Registry)

3. Update Task Definition

  • Retrieve current task definition from Bifrost repository
  • Update task definition with new Docker image URI
  • All resource configurations controlled via task definition:
    • CPU allocation
    • Memory allocation
    • Environment variables
    • Service configurations

4. Deploy to ECS

Execute ECS service update command:

aws ecs update-service \
    --cluster ${ECS_CLUSTER_NAME} \
    --service ${serviceName} \
    --task-definition ${taskDefinitionArn} \
    --desired-count ${currentDesiredCount}

5. Post-Build Actions

  • Slack Notification: Send deployment status to team channel
  • Deployment success/failure notifications

Task Definition Configuration

Location: Bifrost GitHub repository
Purpose: Central configuration management for all microservices

Controlled Parameters:

  • Resource allocation (CPU/Memory)
  • Environment variables
  • Container configurations
  • Service dependencies

Update Process: Any changes to resource allocation or environment variables must be made in the task definition files within the Bifrost repository.


Frontend Deployment Process

Application Details

  • Technology: React Application
  • Hosting: Amazon S3 + CloudFront
  • Deployment Trigger: Manual via Jenkins pipeline

Pipeline Stages

1. Checkout

  • Pull latest code from frontend repository
  • Checkout production branch

2. Prepare

  • Execute npm install to install dependencies
  • Install any additional build dependencies
  • Verify Node.js/npm versions

3. Build

  • Run production build process
  • Generate optimized static assets
  • Minify and bundle application files

4. Deploy to S3

  • Upload built assets to S3 bucket
  • Update S3 static website hosting
  • Set appropriate file permissions and metadata

5. Invalidate CloudFront

  • Execute CloudFront cache invalidation
  • Pattern: /* (invalidate all cached content)
  • Ensure fresh content delivery to users

Deployment Workflow

Backend Deployment Flow

Developer → Manual Trigger → Jenkins Pipeline
    ↓
Checkout Code → Build Docker Image → Push to ECR
    ↓
Update Task Definition → Deploy to ECS → Slack Notification

Frontend Deployment Flow

Developer → Manual Trigger → Jenkins Pipeline
    ↓
Checkout Code → npm install → Build React App
    ↓
Deploy to S3 → CloudFront Invalidation → Complete


Manual Deployment Process

Backend Service Deployment

  1. Access Jenkins dashboard > prod
  2. Navigate to specific microservice pipeline
  3. Click "Build with Parameters"
  4. Monitor pipeline execution
  5. Verify deployment success via ECS console
  6. Check Slack for deployment notification

Frontend Deployment

  1. Access Jenkins dashboard > prod
  2. Navigate to frontend pipeline
  3. Trigger manual build
  4. Monitor build and deployment stages
  5. Verify CloudFront invalidation completion
  6. Test application functionality

Configuration Management

Resource Updates

Important: All CPU, memory, and environment variable changes must be made in:

  • Location: Bifrost GitHub repository
  • Files: Individual task definition files for each service
  • Process: Update task definition → Commit to Bifrost → Run deployment pipeline

Environment Variables

  • Controlled via task definitions in Bifrost repository
  • Include database connections, Redis configurations
  • Updated through task definition modifications

Monitoring and Notifications

Slack Integration

  • Success Notifications: Deployment completion with service details
  • Failure Alerts: Error messages and pipeline failure reasons
  • Channel: Configured team deployment channel

Post-Deployment Verification

  • ECS service health checks
  • Application endpoint testing
  • CloudWatch monitoring review

Document Version: 1.0
Last Updated: 26 June 2025
Maintained By: DevOps

Note: All production deployments are manually triggered for controlled release management using release tags.