我想自动化我们的发布流程,并为Maven项目提供以下Jenkins构建作业:
如果我运行构建,则在执行 Post Step Shell脚本时会收到以下错误:
fatal: could not read Username for 'https://mygitserver': Input/output error
Git Repo服务器使用HTTP进行身份验证。
在控制台日志中,我可以看到Jenkins使用.gitcredentials来处理身份验证:
using .gitcredentials to set credentials
> git config --local credential.username jenkins # timeout=10
> git config --local credential.helper store --file=/tmp/git2442727044778485.credentials # timeout=10
我现在想重复使用这些凭据存储,因为它们是在构建开始时创建的,但在克隆后会再次删除。
这在某种程度上是可能的,还是我需要以“Credentials Binding Plugin”等方式自行处理?
答案 0 :(得分:1)
因为我还没有找到任何在构建开始时从clone命令重用初始Git凭据的解决方案,所以我现在使用了Jenkins Credentials Binding插件并为我的自定义git命令创建了自己的凭据存储在后期步骤。
答案 1 :(得分:0)
这是我为满足类似需求而采取的路径:
答案 2 :(得分:0)
@olibur 提到的凭据绑定插件可以与自定义 extraEnvs
脚本一起使用,以允许使用 GitHub 应用程序进行身份验证:
首先,GitHub Branch Source 插件可用于存储已安装 GitHub 应用程序的凭据。
Credentials Binding 插件必须设置为提供“用户名和密码(单独)”以及 GitHub 应用程序凭据。密码将是临时访问令牌。在下面它被访问为 extraArgs
。用户名是应用程序 ID。
要允许访问 GitHub,必须从 askpass 脚本中返回令牌。通过“注入环境变量”构建步骤,可以将脚本的位置定义为在所有构建步骤中可用的已知位置:
extraVolumes
它必须作为第一个 bash 脚本构建步骤填写,然后 git 才能实际访问存储库:
GIT_ASKPASS
该脚本现在可用于以下所有构建步骤,并且无需指定任何凭据即可使用 git。