我已经设法得到了已经部署的docker镜像,但它必须用groovy编写。
我有以下几点:
sh script: '''
export PATH=\"$PATH\":\"${WORKSPACE}\"
for docker-image in interface data keycloak artifactory ; do
DOCKERHOST=`echo ${DOCKERURL}/images-rancher/$docker-image | sed 's!^localhost://!!g'`
DOCKERVERSION=`docker image ls ${DOCKERHOST} --format '{{ json .Tag }}' | head -1`
echo "${DOCKERHOST} - ${DOCKERVERSION}"
done
'''将其更改为groovy:
def image = [ "interface", "data" , "keycloak", "artifactory" ]
.
.
.
for docker-image in image
println docker-image如何在groovy脚本中实现这一点?
谢谢
发布于 2021-07-05 21:39:55
下面是使用Groovy而不是bash的大部分方法。doRegexManipulation()函数留给您作为练习来实现。
请注意,Groovy仍然是必需的,并且不能转换为“纯”docker image ls sh step。
withEnv(["PATH=${env.PATH}:${env.WORKSPACE}"]) {
def images = [ "interface", "data" , "keycloak", "artifactory" ]
for (String docker_image : images) {
def DOCKERHOST = doRegexManipulation("${DOCKERURL}/images-rancher/$docker_image")
def DOCKERVERSION = sh(
script: """docker image ls '${DOCKERHOST}' --format '{{ json .Tag }}' | head -1""",
returnStdout: true,
)
echo "${DOCKERHOST} - ${DOCKERVERSION}"
}
}如果您愿意,可以更进一步,用Groovy代码替换head -1部件,因为这也可以在Groovy语言中完成。
here中记录了withEnv步骤。它用于为Groovy代码块设置环境变量,从而使这些环境变量可用于Groovy代码块中产生的任何子进程。
https://stackoverflow.com/questions/68231329
复制相似问题