无法访问在groovy脚本中添加的环境变量

问题描述 投票:0回答:1

团队,我想捕获来自 jenkinsfile 的 var

remoteUrl
值到从 jenkinsfile 传递的 groovy 库中,并将其存储在 env var 中以便稍后访问。但我似乎做不到。有什么提示我错过了什么吗?

def call(Map config) {
    for (param in ['credentialsId', 'remoteUrl']) {
        if (!config[param]) {
            error "checkoutGit(): missing parameter ${param}"
        }
    }
    env = ["REMOTE_URL=${config.remoteUrl}"]
    final GIT_YX_URL = "ssh://@git-YX"
    final LIB_GIT_YX_MIRROR_URL = "git://git-mirror:111/git-t"
    if (config.remoteUrl) {
        println "Git YX url passed in user job"
        env.add("GIT_YX_MIRROR_URL=${config.remoteUrl}")
        echo "GIT_YX_MIRROR_URL is: ${GIT_YX_MIRROR_URL}"
    } else {
        println "No Git YX url passed in user job, using Library defined Git Mirror URL"
        env.add("GIT_YX_MIRROR_URL=$LIB_GIT_YX_MIRROR_URL")
    }

我的詹金斯文件是

def REPO_MIRROR_URL = 'git://git-mirror'
            steps {
                container('main') {
                    script {
                        checkoutUtil(
                            credentialsId: 'git-ssh',
                            remoteUrl: "$REPO_MIRROR_URL",
                        )
                    }

我得到的错误是

Git YX url passed in user job

Also:   org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: 01e941fa-4301-4ccc-a4ac-f286eb1e7baa
hudson.remoting.ProxyException: groovy.lang.MissingPropertyException: No such property: GIT_YX_MIRROR_URL for class: checkoutUtil
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:66)
groovy jenkins-groovy
1个回答
0
投票

您当前的问题是这一行:

        echo "GIT_YX_MIRROR_URL is: ${GIT_YX_MIRROR_URL}"

变量 GIT_YX_MIRROR_URL 未在任何地方定义。

接下来,像这样重新定义 `env 是不好的:

    env = ["REMOTE_URL=${config.remoteUrl}"]
Jenkins 已使用

env
来存储当前环境。将其重新用于全局范围的变量是令人困惑的。

最后,Jenkins 共享库应该是无状态的。不要在调用之间保存变量。在某些时候有人必须阅读您的代码。善待他们。

© www.soinside.com 2019 - 2024. All rights reserved.