jenkins 管道脚本中 docker 容器的 if else 条件

Posted

技术标签:

【中文标题】jenkins 管道脚本中 docker 容器的 if else 条件【英文标题】:If else conditions for docker container in jenkins pipeline script 【发布时间】:2021-01-13 21:48:30 【问题描述】:

我在 Jenkins 中创建了一个管道,其步骤是:

    git pull(从 GitHub 获取应用) 构建(maven 打包应用) 构建图像 运行图像

运行图像的代码是 docker run -d --name **application_name** -p 8081:8081 **application_name**

我需要一个 if-else 条件来检查图像是否已创建。 例如。

if (image not created)
     create the image
else
     different step

我需要这个,因为每次我更改代码中的某些内容时,Jenkins 都会抛出一个错误,指出映像已经在运行。

【问题讨论】:

您可以编辑问题并添加您当前的管道脚本吗?即使容器已经在运行,您也应该能够重建映像。 【参考方案1】:

错误可能与this question有关。

无论如何,您都可以构建映像,因为再次构建它并不重要。

如果您想检查图像是否已经存在,您可以使用docker images 命令并检查图像是否存在,如here 所述。

它可能看起来像这样:

script 
    def imageExists = sh(script: "docker images -q <image name>", returnStdout: true) == 0

    if(!imageExists)
        // build the image
    

【讨论】:

以上是关于jenkins 管道脚本中 docker 容器的 if else 条件的主要内容,如果未能解决你的问题,请参考以下文章

JENKINS管道部署容器化初探

带有容器的 Jenkins Docker Sidecar 运行守护程序命令

用于 Jenkins 管道的 Docker 插件 - uid 1005 不存在用户

在 Jenkins 中使用 docker Container 链接

npm install 在 docker 的 jenkins 管道中失败

Docker Windows 容器挂载命名管道