【问题标题】:Can Jenkins pull TFS gated checkin code for build?Jenkins 可以拉取 TFS 门控签入代码进行构建吗?
【发布时间】:2018-05-31 23:41:43
【问题描述】:

我正在尝试让 Jenkins 拉取 TFS 门控签入代码,但没有这样做。

我设法在 TFS 中添加了 Jenkins 构建步骤,此构建步骤是在 Jenkins 中启动构建作业的“触发器”,此作业从 TFS 获取源代码并编译它,问题是此代码没有门控签入。

例如:

  1. 我的代码库是“A”并且正在编译。
  2. 我正在推动应该破坏构建的新更改(我们称之为“B”增量)(无效的 c# 语法)。
  3. 这会触发调用 Jenkins 作业的 TFS 构建,该作业仅采用“A”代码(没有“B”增量)。
  4. Jenkins 成功构建了代码(仅基于“A”),然后 TFS 将此构建标记为成功,并将错误的“B”增量代码放入其中。
  5. 现在每个更改集(包括对此的修复)都会导致下一次构建中断,因为 jenkins 会采用错误的“B”代码并且总是失败。

有没有办法让 Jenkins 通过当前的门控签入来获取代码?

我想使用 Jenkins 构建而不是 TFS 的原因是 Jenkins 中 .Net Core 2.0 的构建过程比 TFS 快 X4 左右,并且我们的源代码控制在 TFS 中进行管理。

使用: TFS - 版本 15.117.26714.0

【问题讨论】:

    标签: jenkins tfs build tfsbuild


    【解决方案1】:

    为避免此问题,您可以在队列 Jenkins Job 任务之前添加一个 VS Build 任务:

    【讨论】:

    • 您所说的“最新变化”是什么意思?我的工作是获取 TFS 中的最新代码,但没有刚刚尝试推送的代码。我在问题中添加了“示例”部分,以使我的场景更加清晰。
    • 但这是我想避免的问题... :\ 我不想在 TFS 中构建“sln”,因为它非常慢。比 Jenkins 中的构建多花 X4 时间
    • @AviramFireberger 您需要在 Jenkins 端获取搁置集,并构建项目,然后在 TFS 构建定义中添加脚本任务以检查 Jenkins 构建结果。如果 Jenkins 构建失败,TFS 构建也会失败。
    • 但这就是问题的全部......“你需要在 Jenkins 方面获取搁置集” Jenkins 没有在更改 \shelvset 中进行门控检查,因此您的解决方案将无法正常工作。 . :\
    • Jenkins 仍然从 TFS 获得最新的变更集,您可以将搁置集添加到构建中。如果构建失败,TFS 不会签入搁置集,因此 Jenkins 不会从 TFS 获取错误代码。
    猜你喜欢
    • 2011-07-24
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2014-12-08
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多