来自参数的 freeStyleJob SCM 凭据不起作用

freeStyleJob SCM credential from parameters not working

我正在尝试使用一个简单的 FreeStyleJob SCM ,并从构建参数中设置 credentialId UUID。问题是,凭据似乎没有正确解析参数。

scm {
    git {
        remote {
            github('${MY_REPO_HANDLE}', 'ssh')
            credentials('${MY_REPO_CREDENTIALS}')
        }
        branch('${MY_BRANCH}')
    }
}

我的MY_REPO_CREDENTIALS是一个简单的字符串参数

stringParam {
        name("MY_REPO_CREDENTIALS")
        defaultValue("teste-credential")
    }

日志:

Warning: CredentialId "${MY_REPO_CREDENTIALS}" could not be found.

更新

这个 Jenkins 作业是由另一个使用 DSL 外部的 Jenkins 作业创建的。在简历中,当触发作业 1 时,将在詹金斯上创建作业 2。当我尝试使用 "$(不带 \) 时,作业将失败,因为作业 1 上下文中不存在此参数。

工作config.xml:

<scm class="hudson.plugins.git.GitSCM">
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>git@github.com:${MY_REPO_HANDLE}.git</url>
<credentialsId>${MY_REPO_CREDENTIALS}</credentialsId>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec>
<name>${MY_BRANCH}</name>
</hudson.plugins.git.BranchSpec>
</branches>
<configVersion>2</configVersion>
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<gitTool>Default</gitTool>
<browser class="hudson.plugins.git.browser.GithubWeb">
<url>https://github.com/${MY_REPO_HANDLE}/</url>
</browser>
</scm>

您可以切换到使用 " 而不是 ',这样您就可以使用自动填充功能:

scm {
    git {
        remote {
            github("${MY_REPO_HANDLE}", 'ssh')
            credentials("${MY_REPO_CREDENTIALS}")
        }
        branch("${MY_BRANCH}")
    }
}

最终的解决方案是在构建之前设置 ssh 代理,使用包装器:

wrappers {
        sshAgent("${MY_REPO_CREDENTIALS}")
    }
    keepDependencies(false)
    scm {
        git {
            remote {
                github("${MY_REPO_HANDLE}", 'ssh')
            }
            branch("${MY_BRANCH}")
        }
    }