Jenkins - Mark build as success



我使用Jenkins来构建我的maven Java应用程序,然后创建Docker映像并推送它。在所有这一切之后,我有尝试捕捉我尝试停止和删除容器,如果它已经运行-如果不是,它应该只是跳过它并运行新的映像-它的工作,但总是标记为失败的构建。我试图改变构建状态,但显然这是不可能的。

下面是我的管道:

node {
stage('Clone repository') {
git branch: 'main', credentialsId: 'realsnack-git', url: 'https://github.com/Realsnack/Java-rest-api.git'
}
stage('Build maven project') {
sh './mvnw clean package'
}
stage('Build docker image') {
sh 'docker build -t 192.168.1.27:49153/java-restapi:latest .'
}
stage('Push image') {
sh 'docker push 192.168.1.27:49153/java-restapi:latest'
}
try {
stage('Remove old container') {
sh 'docker stop java-rest_api && docker rm java-rest_api'
}
} catch(all) {
sh 'No container to remove - runnning it anyway'
} finally {
stage('Run image') {
sh 'docker run -d --name java-rest_api -p 8081:8081 192.168.1.27:49153/java-restapi:latest'
}
}
}

如果docker stop无法停止容器,则会失败。

你可以用以下两种方法之一来解决这个问题:

  1. 在试图停止容器之前检查是否有正在运行的容器:
sh "if [[ docker ps -a | grep java-rest_api ]]; docker stop java-rest_api; fi"
  1. 忽略docker错误:
sh "docker stop java-rest_api || true" 

最新更新