Task 3 — 3-Stage Jenkins Pipeline (Practical)
July 13, 2025
The paper wants exactly 3 stages. The final Jenkinsfile maps 1:1.
Stage mapping
| Stage | Name in Jenkinsfile | What it does |
|---|---|---|
| (ii) | Pull Git Repository | git branch:'main', url:'<your fork>' |
| (iii) | Build Docker Images | docker build backend2 + frontend2 images |
| (iv) | Push to Docker Hub | docker login then docker push both images |
docker loginlives inside the Push stage so the count stays at 3.
Steps to demo in the exam
- Jenkins → New Item → name → Pipeline → OK.
- Pipeline section → Pipeline script from SCM → Git → your forked repo URL →
branch
main→ Script PathJenkinsfile. Save. (Or paste the Jenkinsfile directly using Pipeline script.) - Add Docker Hub creds (ID
dockerhub-creds) under Manage Jenkins → Credentials. - Edit the placeholders:
YOUR_DOCKERHUB_USERNAME,YOUR_INDEX_NO, and the fork URL. - Build Now → all 3 stages go green → verify the images on Docker Hub.
Final Jenkinsfile (3 stages)
pipeline {
agent any
environment {
DOCKERHUB_USER = 'YOUR_DOCKERHUB_USERNAME'
INDEX_NO = 'YOUR_INDEX_NO'
DOCKERHUB_CREDS = credentials('dockerhub-creds')
}
stages {
stage('Pull Git Repository') {
steps { git branch: 'main', url: 'https://github.com/YOUR_USERNAME/YOUR_FORKED_REPO.git' }
}
stage('Build Docker Images') {
steps {
sh 'docker build -f backend2/DOCKERFILE -t $DOCKERHUB_USER/${INDEX_NO}-backend:latest ./backend2'
sh 'docker build -f frontend2/DOCKERFILE -t $DOCKERHUB_USER/${INDEX_NO}-frontend:latest ./frontend2'
}
}
stage('Push to Docker Hub') {
steps {
sh 'echo $DOCKERHUB_CREDS_PSW | docker login -u $DOCKERHUB_CREDS_USR --password-stdin'
sh 'docker push $DOCKERHUB_USER/${INDEX_NO}-backend:latest'
sh 'docker push $DOCKERHUB_USER/${INDEX_NO}-frontend:latest'
}
}
}
post { always { sh 'docker logout || true' } }
}
End-to-end flow to recite
Install/run Jenkins → install plugins → add Docker Hub credentials → New Item →
Pipeline → Pipeline from SCM (your forked repo, Jenkinsfile) → Build Now →
Jenkins checks out the code → builds backend & frontend images → docker login
→ pushes both images to Docker Hub → verify on Docker Hub.
Related: [[jenkins-jenkinsfile-explained]], [[docker-multi-container-app]].