使用Jenkins pipeline中的用户输入参数化Docker代理映像参数[重复]

kyxcudwk  于 2023-01-25  发布在  Jenkins
关注(0)|答案(1)|浏览(173)

此问题在此处已有答案

Jenkins: how to use variables inside agent docker args?(1个答案)
2天前关闭。
我有一个使用Docker代理的Jenkins管道。我希望用户能够指定图像存储库中的哪个标记用于管道。在下面的示例中,管道有一个用户可以指定的名为tag的参数,该参数附加(连接)到Docker代理的image参数。完整示例如下所示。

#!/usr/bin/env groovy

def call(String tag = 'latest') {
    pipeline {
        agent {
            docker {
                image "analytics/rsc:${tag}"
                registryUrl 'my.local.registry'
                ...
            }
        }
        ...
    }
}

这将引发错误

...12: Invalid config option "call" for agent type "docker". Valid config options are [image, alwaysPull, args, containerPerStageRoot, customWorkspace, label, registryCredentialsId, registryUrl, reuseNode] @ line 12, column 17.
                   image analytics/rsc:${tag}

我尝试过image参数的其他变体,包括

image "analytics/rsc:" + "${tag}"

以及

image 'analytics/rsc:' + tag

这些方法都不起作用(我得到了与第一个示例类似的错误,其中没有计算变量tag,而是传递了文本"tag"

kcugc4gi

kcugc4gi1#

这是一个已知的问题,被报告为JENKINS-42369。不幸的是,我不认为他们会很快修复它,因为它是6年前报告的。
您可以尝试this workaround,但变通方法并非在所有情况下都有效。

相关问题