59 lines
1.8 KiB
Groovy
59 lines
1.8 KiB
Groovy
pipeline {
|
|
agent any
|
|
|
|
environment {
|
|
// Replace with your actual registry URL (e.g., harbor.example.com or docker.io)
|
|
REGISTRY_URL = 'localhost:5000'
|
|
IMAGE_NAME = 'hello-world-node'
|
|
// The ID of the credentials you've stored in Jenkins for your registry
|
|
REGISTRY_CREDENTIALS_ID = 'registry-credentials'
|
|
}
|
|
|
|
stages {
|
|
stage('Checkout') {
|
|
steps {
|
|
// This stage is usually handled automatically by Jenkins when using a Multibranch Pipeline or SCM
|
|
checkout scm
|
|
}
|
|
}
|
|
|
|
stage('Build Docker Image') {
|
|
steps {
|
|
script {
|
|
echo "Building image: ${REGISTRY_URL}/${IMAGE_NAME}:${env.BUILD_NUMBER}"
|
|
// Build the image using the multistage Dockerfile
|
|
dockerImage = docker.build("${REGISTRY_URL}/${IMAGE_NAME}:${env.BUILD_NUMBER}", "./hello-world-node")
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Push to Registry') {
|
|
steps {
|
|
script {
|
|
// Log in to the registry using stored credentials and push the image
|
|
docker.withRegistry("http://${REGISTRY_URL}", REGISTRY_CREDENTIALS_ID) {
|
|
dockerImage.push()
|
|
dockerImage.push('latest')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Cleanup') {
|
|
steps {
|
|
sh "docker rmi ${REGISTRY_URL}/${IMAGE_NAME}:${env.BUILD_NUMBER}"
|
|
sh "docker rmi ${REGISTRY_URL}/${IMAGE_NAME}:latest"
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
success {
|
|
echo 'Deployment successful!'
|
|
}
|
|
failure {
|
|
echo 'Deployment failed. Check the logs for details.'
|
|
}
|
|
}
|
|
}
|