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)" ]; 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''' } } } }