42 lines
1.2 KiB
Groovy
42 lines
1.2 KiB
Groovy
pipeline {
|
|
agent any
|
|
stages {
|
|
stage('Build Docker Image') {
|
|
steps {
|
|
sh 'docker build -t worldcraftdiscordbot:latest .'
|
|
sh "docker tag worldcraftdiscordbot:latest worldcraftdiscordbot:v${env.BUILD_ID}"
|
|
}
|
|
}
|
|
|
|
stage('Publish') {
|
|
steps {
|
|
sh '''if [ ! "$(docker ps -q -f name=worldcraftdiscordbot_1)" ]; then
|
|
if [ "$(docker ps -aq -f status=exited -f name=worldcraftdiscordbot_1)" ]; then
|
|
# cleanup
|
|
docker rm worldcraftdiscordbot_1
|
|
fi
|
|
# run your container
|
|
NEW=worldcraftdiscordbot_1
|
|
OLD=worldcraftdiscordbot_2
|
|
docker run -d --name worldcraftdiscordbot_1 --restart unless-stopped worldcraftdiscordbot:v${env.BUILD_ID}
|
|
else [ ! "$(docker ps -q -f name=worldcraftdiscordbot_2)" ];
|
|
if [ "$(docker ps -aq -f status=exited -f name=worldcraftdiscordbot_2)" ]; then
|
|
# cleanup
|
|
docker rm worldcraftdiscordbot_2
|
|
fi
|
|
NEW=worldcraftdiscordbot_2
|
|
OLD=worldcraftdiscordbot_1
|
|
# run your container
|
|
docker run -d --name $NEW --restart unless-stopped worldcraftdiscordbot:v${env.BUILD_ID}
|
|
fi
|
|
|
|
# remove old container after 3 seconds
|
|
if [ "$(docker ps -a -f name=$OLD)" ]; then
|
|
sleep 3s
|
|
docker stop $OLD
|
|
fi'''
|
|
}
|
|
}
|
|
|
|
}
|
|
} |