从 Jenkins 管道运行 Docker 容器并捕获输出

Ern*_*aan 5 jenkins docker jenkins-pipeline

在 Jenkinsfile 中,如何运行 Docker 容器并捕获输出,而不恢复为sh指令?

这就是我在该阶段构建容器映像的方式Build

dockerImage = docker.build(env.DOCKER_COORDS, "--build-arg BUILD_VERSION=${env.BUILD_VERSION} .")
Run Code Online (Sandbox Code Playgroud)

这就是我在后期推送图像的方式Publish

withDockerRegistry(credentialsId: env.DOCKER_REG_CREDS_ID) {
    dockerImage.push('latest')
}
Run Code Online (Sandbox Code Playgroud)

Build在和阶段之间Publish,在一个Test阶段中,我想验证容器的输出在传递参数时--version是否等于${env.BUILD_VERSION}

如何运行容器并捕获输出,而无需sh "docker ..."再次使用指令?

小智 0

通常,您可以使用该方法运行并捕获输出sh(在 Linux 从属设备和batWindows 上)。例如,要检索官方 python docker 的 python 版本,它将如下所示:

def version = sh label: '', returnStdout: true, script: 'docker run python python --version'
Run Code Online (Sandbox Code Playgroud)

然后您可以将命令的输出与${env.BUILD_VERSION}. 这应该与您的 docker 映像没有什么不同。