【问题标题】:Configuring Git trigger for Jenkins? (Using TFS2017)为 Jenkins 配置 Git 触发器? (使用 TFS2017)
【发布时间】:2018-09-24 03:50:50
【问题描述】:

场景:

  1. TFS2017 团队项目

  2. 150-200 个 Git 存储库

  3. 每个存储库有 10-30 个分支

我们希望将 Jenkins 整合到我们的工作流程中,以帮助进行 TFS 构建以及外部部署和测试。我们需要一个 Jenkins 作业来触发 Git 代码推送,这很简单。需要将签入信息传递到作业中,不管它是参数形式还是 HTTP POST 有效负载之类的形式,其中包括分支名称、存储库名称/url 等基本信息。因为我们为所有存储库和分支使用 1 个 Jenkins 脚本化管道,我们不想将 1 个 Jenkinsfile 签入 300 多个分支,当我们需要对管道执行更改时,这需要更新每个分支。

我们的尝试:

  1. TFS Jenkins 服务挂钩到 Jenkins 管道项目:不传入动态参数(分支/存储库名称),并且无法将有效负载检索到管道脚本中。

  2. TFS Jenkins 服务挂钩到 Jenkins Multibranch 项目(借助“Pipeline: Multibranch with default”插件):在 TFS 服务挂钩中,当使用“触发通用构建”时,我们必须指定 Multibranch/repobranch 作业每个服务挂钩单独命名,或者如果使用“触发 Git 构建”选项,它会同时触发所有多分支分支的构建。

  3. TFS Jenkins 服务挂钩到 Jenkins 多配置项目:无法指定由 Jenkins 项目运行的 Jenkinsfile。

  4. 任何 Jenkins 项目的 TFS 通用 Web Hook:Crumbs 错误排除了这种可能性。

如果我们在上述尝试中遗漏了什么或完全不同的方法,请告诉我。

【问题讨论】:

  • 出于好奇,为什么使用 Jenkins 而不是开箱即用的构建/发布功能?
  • 考虑过 TFS Build 来调用一个简单的 powershell 来调用 Jenkins 构建?在调用 Jenkins 时,为您提供对变量的最大可用性和对数据形状的完全控制。
  • 还想知道 Jenkins 通过 TFS Buikd 为您提供了什么,尽管我怀疑它是 Jenkinsfile,将配置作为代码构建。考虑升级到 TFS 2018 以获得 TFS 中的 YAML 支持。
  • 对于这么大的项目,我会选择 Job DSL 插件。我在这方面取得了很大的成功,并且使维护变得非常容易。你可以做一些事情,比如从 git repo 下载所有分支并为每个分支创建一个工作。
  • 我个人很喜欢使用内置的 TFS 构建,它足够简单地触发代码推送,并且可以在成功构建完成后执行 Jenkins 构建,但是唉(违背我的意愿)这不是一个选项独立的原因。

标签: git jenkins groovy tfs triggers


【解决方案1】:

如果有人遇到同样的问题,答案/解决方案:

现在我们将在 Jenkins 中禁用 CSRF 并使用上面的 #4。使用通用 Web Hook 插件,我们可以从 TFS 发送的通用 Web Hook 的传入负载中指定使用 JSONPaths 的变量。

长期来看,当这个项目充实时,我们将编写自己的服务来侦听 TFS 通用 Web Hook 请求,然后获取一个 crumb,然后将正式的 HTTP Post 发送到它侦听的通用 Web Hook 插件默认 url (启用 Jenkins 的 CSRF)。

【讨论】:

猜你喜欢
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 2022-11-14
  • 2016-06-23
  • 1970-01-01
  • 2021-12-19
相关资源
最近更新 更多