Update 'Jenkinsfile'

main
CIzz22 3 weeks ago
parent abb7e8d27b
commit fa76ef629d

115
Jenkinsfile vendored

@ -2,106 +2,95 @@ pipeline {
agent any agent any
environment { environment {
// Replace with your Docker Hub username/organization
DOCKER_HUB_USERNAME = 'aimodocker' DOCKER_HUB_USERNAME = 'aimodocker'
// Use credentials for Docker Hub // This creates DOCKER_AUTH_USR and DOCKER_AUTH_PSW
DOCKER_CREDENTIALS = credentials('aimodocker') DOCKER_AUTH = credentials('aimodocker')
// Replace with your image name
IMAGE_NAME = 'rbd-service' IMAGE_NAME = 'rbd-service'
// Replace with your docker compose service name SERVICE_NAME = 'ahm-app'
SERVICE_NAME = 'rbd-app'
// Variable for Git commit hash
GIT_COMMIT_HASH = ''
// Replace with the SSH credentials for development server SECURITY_PREFIX = 'security'
// SSH_CREDENTIALS = credentials('backend-server-digitaltwin')
// SSH_CREDENTIALS_USR = 'aimo' // Initialize variables to be updated in script blocks
// SSH_SERVER_IP = '192.168.1.82' GIT_COMMIT_HASH = ""
IMAGE_TAG = ""
SECONDARY_TAG = ""
} }
stages { stages {
stage('Checkout') { stage('Checkout & Setup') {
steps { steps {
script { script {
// Checkout and get git commit hash
checkout scm checkout scm
def commitHash = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() GIT_COMMIT_HASH = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
GIT_COMMIT_HASH = commitHash
echo "Git commit hash: ${GIT_COMMIT_HASH}" // Use env.BRANCH_NAME or logic to handle detached HEAD if necessary
def branch = env.BRANCH_NAME ?: 'unknown'
echo "Current Branch: ${branch}"
if (branch == 'main') {
IMAGE_TAG = GIT_COMMIT_HASH
SECONDARY_TAG = 'latest'
} else if (branch == 'rbd_security') {
IMAGE_TAG = "${SECURITY_PREFIX}-${GIT_COMMIT_HASH}"
SECONDARY_TAG = "${SECURITY_PREFIX}-latest"
} else {
IMAGE_TAG = "temp-${GIT_COMMIT_HASH}"
SECONDARY_TAG = "" // Ensure it's empty for other branches
}
echo "Primary Tag: ${IMAGE_TAG}"
} }
} }
} }
stage('Docker Login') { stage('Docker Login') {
steps { steps {
sh ''' // Fixed variable names based on the 'DOCKER_AUTH' environment key
echo ${DOCKER_CREDENTIALS_PSW} | docker login -u ${DOCKER_CREDENTIALS_USR} --password-stdin sh "echo ${DOCKER_AUTH_PSW} | docker login -u ${DOCKER_AUTH_USR} --password-stdin"
'''
} }
} }
stage('Build Docker Image') { stage('Build & Tag') {
steps { steps {
script { script {
// Build with commit hash tag def fullImageName = "${DOCKER_HUB_USERNAME}/${IMAGE_NAME}"
sh """ sh "docker build -t ${fullImageName}:${IMAGE_TAG} ."
docker build -t ${DOCKER_HUB_USERNAME}/${IMAGE_NAME}:latest .
docker tag ${DOCKER_HUB_USERNAME}/${IMAGE_NAME}:latest ${DOCKER_HUB_USERNAME}/${IMAGE_NAME}:${GIT_COMMIT_HASH} if (SECONDARY_TAG) {
""" sh "docker tag ${fullImageName}:${IMAGE_TAG} ${fullImageName}:${SECONDARY_TAG}"
}
} }
} }
} }
stage('Push to Docker Hub') { stage('Push to Docker Hub') {
steps { steps {
sh """ script {
# Push both tags def fullImageName = "${DOCKER_HUB_USERNAME}/${IMAGE_NAME}"
docker push ${DOCKER_HUB_USERNAME}/${IMAGE_NAME}:${GIT_COMMIT_HASH} sh "docker push ${fullImageName}:${IMAGE_TAG}"
docker push ${DOCKER_HUB_USERNAME}/${IMAGE_NAME}:latest
""" if (SECONDARY_TAG) {
sh "docker push ${fullImageName}:${SECONDARY_TAG}"
}
}
} }
} }
// stage('Deploy') {
// steps {
// script {
// sshagent(credentials: ['backend-server-digitaltwin']) {
// sh """
// ssh -o StrictHostKeyChecking=no -p 12558 aimo@0.tcp.ap.ngrok.io '
// cd ~/digital-twin/Docker
// sudo docker compose pull ${SERVICE_NAME}
// sudo docker compose up -d ${SERVICE_NAME}
// '
// """
// }
// }
// }
// }
} }
post { post {
always { always {
// Clean up
sh 'docker logout'
// Clean up local images
script { script {
try { sh 'docker logout'
sh """ def fullImageName = "${DOCKER_HUB_USERNAME}/${IMAGE_NAME}"
# Push both tags // Clean up images to save agent disk space
docker rmi ${DOCKER_HUB_USERNAME}/${IMAGE_NAME}:${GIT_COMMIT_HASH} sh "docker rmi ${fullImageName}:${IMAGE_TAG} || true"
docker rmi ${DOCKER_HUB_USERNAME}/${IMAGE_NAME}:latest if (SECONDARY_TAG) {
""" sh "docker rmi ${fullImageName}:${SECONDARY_TAG} || true"
} catch (err) {
echo "Failed to clean up images: ${err}"
} }
} }
} }
success { success {
echo "Successfully built, pushed, and deployed Docker image with tags: latest and ${GIT_COMMIT_HASH}" echo "Successfully processed ${env.BRANCH_NAME}."
}
failure {
echo 'Failed to build/push/deploy Docker image!'
} }
} }
} }
Loading…
Cancel
Save