versioning
This commit is contained in:
40
Jenkinsfile
vendored
40
Jenkinsfile
vendored
@@ -3,12 +3,12 @@ pipeline {
|
|||||||
|
|
||||||
environment {
|
environment {
|
||||||
// Tag images with the build number so they are unique
|
// Tag images with the build number so they are unique
|
||||||
FRONTEND_IMAGE = "chore-app-frontend:${env.BUILD_ID}"
|
APP_FRONTEND_NAME = "chore-app-frontend"
|
||||||
BACKEND_IMAGE = "chore-app-backend:${env.BUILD_ID}"
|
APP_BACKEND_NAME = "chore-app-backend"
|
||||||
FRONTEND_IMAGE_LATEST = "chore-app-frontend:latest"
|
IMAGE_FRONTEND_NAME = "${APP_FRONTEND_NAME}:${env.BUILD_ID}"
|
||||||
BACKEND_IMAGE_LATEST = "chore-app-backend:latest"
|
IMAGE_BACKEND_NAME = "${APP_BACKEND_NAME}:${env.BUILD_ID}"
|
||||||
VUE_CONTAINER_NAME = "chore-app-frontend"
|
CONTAINER_FRONTEND_NAME = "${APP_FRONTEND_NAME}"
|
||||||
FLASK_CONTAINER_NAME = "chore-app-backend"
|
CONTAINER_BACKEND_NAME = "${APP_BACKEND_NAME}"
|
||||||
NETWORK_NAME = "chore-app-net"
|
NETWORK_NAME = "chore-app-net"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ pipeline {
|
|||||||
stage('Build Frontend (Vue) App') {
|
stage('Build Frontend (Vue) App') {
|
||||||
steps {
|
steps {
|
||||||
dir('web/vue-app') {
|
dir('web/vue-app') {
|
||||||
sh 'docker build -t ${FRONTEND_IMAGE} .'
|
sh 'docker build -t ${IMAGE_FRONTEND_NAME} .'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -43,7 +43,7 @@ pipeline {
|
|||||||
stage('Build Backend (Flask) App') {
|
stage('Build Backend (Flask) App') {
|
||||||
steps {
|
steps {
|
||||||
dir('.') {
|
dir('.') {
|
||||||
sh """docker build --build-arg APP_BUILD=${BUILD_NUMBER} -t chore-app-backend:${BASE_VERSION}-${BUILD_NUMBER} ."""
|
sh """docker build --build-arg APP_BUILD=${BUILD_NUMBER} -t ${APP_BACKEND_NAME}:${BASE_VERSION}-${BUILD_NUMBER} ."""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -51,10 +51,10 @@ pipeline {
|
|||||||
stage('Deploy') {
|
stage('Deploy') {
|
||||||
steps {
|
steps {
|
||||||
echo 'Stopping and removing old containers...'
|
echo 'Stopping and removing old containers...'
|
||||||
sh "docker stop ${VUE_CONTAINER_NAME} || true"
|
sh "docker stop ${CONTAINER_FRONTEND_NAME} || true"
|
||||||
sh "docker rm ${VUE_CONTAINER_NAME} || true"
|
sh "docker rm ${CONTAINER_FRONTEND_NAME} || true"
|
||||||
sh "docker stop ${FLASK_CONTAINER_NAME} || true"
|
sh "docker stop ${CONTAINER_BACKEND_NAME} || true"
|
||||||
sh "docker rm ${FLASK_CONTAINER_NAME} || true"
|
sh "docker rm ${CONTAINER_BACKEND_NAME} || true"
|
||||||
|
|
||||||
echo 'Cleaning up and creating network...'
|
echo 'Cleaning up and creating network...'
|
||||||
sh "docker network rm -f ${NETWORK_NAME} || true"
|
sh "docker network rm -f ${NETWORK_NAME} || true"
|
||||||
@@ -65,19 +65,19 @@ pipeline {
|
|||||||
|
|
||||||
sh """
|
sh """
|
||||||
docker run -d \\
|
docker run -d \\
|
||||||
--name ${VUE_CONTAINER_NAME} \\
|
--name ${CONTAINER_FRONTEND_NAME} \\
|
||||||
--network ${NETWORK_NAME} \\
|
--network ${NETWORK_NAME} \\
|
||||||
-p 443:443 \\
|
-p 443:443 \\
|
||||||
${FRONTEND_IMAGE}
|
${IMAGE_FRONTEND_NAME}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
sh """
|
sh """
|
||||||
docker run -d \\
|
docker run -d \\
|
||||||
--name ${FLASK_CONTAINER_NAME} \\
|
--name ${CONTAINER_BACKEND_NAME} \\
|
||||||
--network ${NETWORK_NAME} \\
|
--network ${NETWORK_NAME} \\
|
||||||
-e BUILD_NUMBER=${BUILD_NUMBER} \\
|
-e BUILD_NUMBER=${BUILD_NUMBER} \\
|
||||||
-v ${FLASK_CONTAINER_NAME}_data:/app/data \\
|
-v ${CONTAINER_BACKEND_NAME}_data:/app/data \\
|
||||||
chore-app-backend:${BASE_VERSION}-${BUILD_NUMBER}
|
${APP_BACKEND_NAME}:${BASE_VERSION}-${BUILD_NUMBER}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
echo 'Deployment complete!'
|
echo 'Deployment complete!'
|
||||||
@@ -87,8 +87,8 @@ pipeline {
|
|||||||
stage('Tag Latest') {
|
stage('Tag Latest') {
|
||||||
steps {
|
steps {
|
||||||
echo 'Tagging deployed images as latest...'
|
echo 'Tagging deployed images as latest...'
|
||||||
sh "docker tag ${FRONTEND_IMAGE} chore-app-frontend:latest"
|
sh "docker tag ${IMAGE_FRONTEND_NAME} chore-app-frontend:latest"
|
||||||
sh "docker tag chore-app-backend:${BASE_VERSION}-${BUILD_NUMBER} chore-app-backend:latest"
|
sh "docker tag ${APP_BACKEND_NAME}:${BASE_VERSION}-${BUILD_NUMBER} ${APP_BACKEND_NAME}:latest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,7 +107,7 @@ pipeline {
|
|||||||
echo 'Docker images pruned.'
|
echo 'Docker images pruned.'
|
||||||
// Optional: Stop old containers and run the new ones
|
// Optional: Stop old containers and run the new ones
|
||||||
// Note: In production, you would push to a registry (DockerHub) instead
|
// Note: In production, you would push to a registry (DockerHub) instead
|
||||||
sh "echo 'Build Complete. Images ready: ${FRONTEND_IMAGE} and ${BACKEND_IMAGE}'"
|
sh "echo 'Build Complete. Images ready: ${IMAGE_FRONTEND_NAME} and ${IMAGE_BACKEND_NAME}'"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user