首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要将shell命令更改为groovy

需要将shell命令更改为groovy
EN

Stack Overflow用户
提问于 2021-07-03 05:18:25
回答 1查看 41关注 0票数 0

我已经设法得到了已经部署的docker镜像,但它必须用groovy编写。

我有以下几点:

代码语言:javascript
复制
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:

代码语言:javascript
复制
def image = [ "interface", "data" , "keycloak", "artifactory" ]
.
.
.
for docker-image in image
   println docker-image

如何在groovy脚本中实现这一点?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-07-05 21:39:55

下面是使用Groovy而不是bash的大部分方法。doRegexManipulation()函数留给您作为练习来实现。

请注意,Groovy仍然是必需的,并且不能转换为“纯”docker image ls sh step

代码语言:javascript
复制
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代码块中产生的任何子进程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68231329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档