我正在尝试在我的工作流程的 git 步骤下提供一个参数作为 credentialId。我在我的工作文件夹中将以下变量定义为环境变量:
stashProject=ssh://git@stash.finra.org:7999/rpt
gitProdCredential=289b9074-c29a-463d-a793-6e926174066c
我的内联 Groovy CPS DSL 工作流脚本有以下几行:
sh 'echo retrieving code using credential: ${gitProdCredential}'
git url: '${stashProject}/etl.git', credentialsId: '${gitProdCredential}', branch: 'feature/workflow'
您可以看到变量正在被正确评估,因为 gitProdCredential 被回显,并且 git 检索确实尝试从我的正确 URL 获取,基于以下输出:
使用凭据检索代码:289b9074-c29a-463d-a793-6e926174066c hudson.plugins.git.GitException:无法从 ssh://git@stash.finra.org:7999/rpt/etl.git 获取标准错误:权限被拒绝(公钥)。
但是您也可以看到它没有正确进行身份验证。但是,如果我像这样对 gitProdCredential 进行硬编码
git url:'${stashProject}/etl', credentialId: '289b9074-c29a-463d-a793-6e926174066c', branch: 'feature/workflow'
它运行得很好并克隆了我的仓库。因此,不知何故,在 git DSL 函数中没有正确评估 credentialId 变量,即使它似乎在工作流程的其余部分中。请告知我是否遗漏了什么。