Jenkins - 将构建标记为成功

Jenkins - Mark build as success

我使用 Jenkins 构建我的 Maven Java 应用程序,然后创建 Docker 图像并推送它。毕竟我有 try-catch 我尝试停止并删除容器,如果它已经 运行ning - 如果不是它应该跳过它和 运行 新图像 - 它工作但总是标记构建失败。我试图更改构建状态,但显然这是不可能的。

这是我的管道:

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"