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
- Access Jenkins dashboard > prod
- Navigate to specific microservice pipeline
- Click "Build with Parameters"
- Monitor pipeline execution
- Verify deployment success via ECS console
- Check Slack for deployment notification
Frontend Deployment
- Access Jenkins dashboard > prod
- Navigate to frontend pipeline
- Trigger manual build
- Monitor build and deployment stages
- Verify CloudFront invalidation completion
- 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.
No Comments