Jenkins:如何在参数化作业中传递 Git 凭据?

Jenkins: how to pass Git credentials in parameterized job?

我们有一个带有许多分支的 Git Bitbacket 存储库。我想创建一个作业,允许通过参数化作业从这些分支中的任何一个运行代码。
我的用户案例是:有人单击带有参数的构建,选择他/她的存储库分支和分支,选择凭据(或添加新的并选择),然后开始工作。 Jenkins 应该使用他/她的凭据从他/她的 fork 中获取代码。

我使用 Git 插件和 Credential 插件。
我将存储库 url 和分支移至参数。
此外,我在 Credentials 插件中添加了必要的凭据。然后我创建了 Credentials 参数。

但我无法让 Git 获取这些参数。我总是收到"身份验证失败"错误。
如何将选定的凭据绑定到 Git 插件?我应该在凭据字段中选择什么以使 Git 从作业参数中获取此凭据?还是我应该做点别的?


我不确定是否可以参数化 Git 凭据。即使您可以这样做,如果您的 Jenkins 实例不受 SSL 保护(使用 HTTPS 协议而不是普通 HTTP),这可能会暴露 Git 帐户的安全漏洞。

Alternative approach:

当你提到多个分支时,我假设它们只是主主分支的一些功能分支,最终将与主分支合并。

我认为您还可以通过配置为在指定 Git 存储库中构建任何分支的单个 Jenkins 作业来实现您的目标。您需要使用单个用户(您的团队成员之一或创建一个专门用于 Jenkins 构建的专用用户)配置 Git 插件。然后,在插件配置中,需要定义一些属性如下:

  • 存储库 -> 名称:原点
  • 存储库-> Refspec:留空
  • 要构建的分支:**(这两个星号是关键)

现在,只要您在存储库中配置了 Web Hooks 以接收 Jenkins 通知,Jenkins 将接收到您配置的 Git 存储库中任何分支的任何推送。

这种方法的优点是开发和构建周期是完全自动化的。您还可以添加自动电子邮件通知。

请注意,此答案基于 Jenkins 版本 1.6xx。