Jenkins Pipeline withCredentials秘密文件奇怪的行为

时间:2017-10-24 23:22:49

标签: jenkins-plugins jenkins-pipeline

我使用Jenksin v2.5.0和FTP linked service samples插件v 2.1.16以及Credentials插件v1.13(两者都是最新版本),虽然它似乎按预期工作,但它展示了当我继续重新运行我的管道时,奇怪的重复行为。

正在使用以下管道语法:

withCredentials([file(credentialsId: '<credID>', variable: 'KEY_FILE')]) {
       ...steps here create ${workspace}/ssh script using KEY_FILE...
       sh(script: "docker exec ${containerName} /bin/bash -c 'cd ${entryPoint} && GIT_SSH='${workspace}/ssh' git fetch --tags --progress git@gitserver.com:${group}/${project}.git +refs/h eads/${branch}:refs/remotes/origin/${branch}'")
} //credentials

它按预期进行评估并且功能正常,如下所示:

    [Build] Running shell script
    + docker exec <container> /bin/bash -c 'cd /<buildRoot>/build && GIT_SSH=/<workspace>/ssh git fetch --tags --progress git@gitsserver.com:<group>/<project>.git +refs/heads/staging:refs/remotes/origin/staging'
    Warning: Identity file /<workspace>/<job>@tmp/secretFiles/a36b7edb-2914-419a-8be0-478603d1b031/keyfile.txt not accessible: No such file or directory.
Permission denied, please try again.
Permission denied, please try again.
Received disconnect from gitserver.com port 22:2: Too many authentication failures for git
Connection to gitsserver.com closed by remote host.
Warning: Identity file /<workspace>/<job>@tmp/secretFiles/ccb1e11c-18f5-4697-b5c1-e4514c1ab1c7/keyfile.txt not accessible: No such file or directory.

***它指出它在git操作期间无法找到文件的部分(即在下面使用SSH)是继续重复的部分,每次在路径中使用不同的秘密文件GUID(如上所示是两个重复)。底层实现似乎实现了对“git fetch”的一系列循环。命令,每次都尝试新的凭据路径。

Jenkins如何/为何如此: 1)每次创建这些新路径 2)知道在单个失败的git命令上循环,直到它最终传递启用身份验证的秘密文件并且git成功 对我来说是个谜。

任何见解都将受到赞赏。

PS&GT;我已经意识到我的环境中尚未提供的新版本的git有不同的方法可用于提供SSH选项。我喜欢这个问题,专注于奇怪的withCredentials行为。

PPS&GT;我也已经为管道尝试了更高级别的构造,至少包括&#39; git&#39; SCM插件专业化和#docker&#39;节点类型与它&#34;内部()&#34;功能,但这些结构的许多迭代总是让我有些奇怪,再次,这不是这个问题的焦点。

1 个答案:

答案 0 :(得分:2)

事实证明,这对Jenkins或任何插件来说都不是问题。

写入Jenkins工作区的临时脚本不断被附加到,这意味着它是所有无效秘密文件路径和“循环”的源...该脚本中的最后一个命令始终是一个正确的道路,它会成功。