43 lines
1.2 KiB
Groovy
43 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<72>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)" ]; then
|
||
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'''
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|