Process of CI/CD:
- Detect Changes & Fetch [(Git)]
- Build & Version [(npm, gradle)]
- Unit Tests [(Junit, Jest, etc)]
- Code Analysis - (optional)
- Push to Prod
Jenkins handles all of these processes n CI/CD
Jenkins Concepts
- Freestyle vs Pipeline: Freestyle build CD with UI / Pipeline builds with code (Groovy)
- Plugins: Extension tools, such as npm, pip, cargo, etc
- Tools: Plugins that are activated, (recommended: Auto Install)
- Job: Build task
- Triggers: Entry point to initialise build automatically, common ways:
- Git Webhook // Poll SCM (Source Code Manager) - Interval Polling
Setup Docker CI/CD -> ECR -> ECS
CI - Docker to ECR
- Setup New EC2
- Install Docker & AWS CLI
- Add jenkins to docker group
- Create ECR - public & get URl
- Store AWS Creds (access & secret) in jenkins global creds
CD - ECR to ECS
- Build Cluster & Select Instances (use Fargate Serverless) + Insights
- Task config
- build (1CPU, 2GB mem) - [ Container for ECS ]
- add container from ECR URI here
- Create Service (allow HTTP - 80 & TCP - 8080) [LB 80 -> Cont. 8080]