【问题标题】:TeamCity Build Steps SetupTeamCity 构建步骤设置
【发布时间】:2014-09-13 08:25:22
【问题描述】:

我正在尝试弄清楚如何配置 TeamCity 构建步骤以完成以下任务:

  1. 调用将 dev 分支合并到 test 分支的控制台应用程序(在 TFS)并在测试分支中手动修改一些文件 用于项目配置。这个过程完美无缺 并且已经过测试。另请注意,此步骤不会签入 合并文件或修改文件到测试分支。
  2. 此构建步骤将启动测试的实际解决方案构建 分支。 (这是 C#.NET,但我认为这并不重要)
  3. 此构建步骤处理任何 SQL 脚本的数据库迁移 添加。 (此步骤也已经过测试并且有效)
  4. 此步骤调用另一个控制台应用程序。即使前面的步骤失败,此步骤也会运行。如果构建成功,它将检查步骤 1 中的待处理更改,并进行构建部署。如果在上一步中构建失败,它将撤消第 1 步中的未决更改。

这似乎很简单,但我不知道第 1 步和第 2 步之间的交互。如果我在步骤 2 中使用服务器端签出,它将从服务器中提取源代码,而不使用我在步骤 1 中的更改。如果我在用户代理端签出,我的理解是它将创建一个新工作区并从中提取源代码服务器,再次没有使用我在步骤 1 中的更改。

有没有一种方法可以使用第 1 步中创建的待处理更改进行第 2 步构建?我能想到的唯一其他选择是在步骤 1 之后检查更改,如果构建失败,则在步骤 4 中回滚更改集。但在这种情况下,第 4 步如何知道要回滚的变更集?


我还有一个小问题,如何将构建成功作为参数传递给第 4 步?我查看了内置参数,但没有一个用于构建失败/成功的参数?

谢谢!

【问题讨论】:

    标签: continuous-integration teamcity build-process teamcity-8.0 build-server


    【解决方案1】:

    如果你能给出你正在使用的 VCS 名称(Git/SVN),那将会很有用。我看你的问题主要是2个要点

    • 如果您使用的是 Teamcity build Steps ,则在所有构建步骤中 是您不必担心的单个目标的一部分 步骤 1 和步骤 2 之间的交互。所有步骤都可以在相同的情况下运行 目录 。您始终保持工作副本状态 子步骤。
    • teamcity 中的唯一故障是您无法运行构建/步骤“仅当 上一步失败”。要解决此问题,您可以创建一个失败
      之前的任何步骤中的文件并仅在该文件时运行构建 存在。在每次构建结束时删除文件只是为了确保 下一次构建中不会出现意外问题。

    因此,简而言之,您的构建步骤可以 (1) 签出一个分支,(2) 将另一个分支合并到其中,(3) 运行构建和数据库部署,然后 (4) 提交您的代码/回滚您的数据库更改,如果它基于失败文件失败。

    对于您的第二个问题,每个 teamcity 步骤都知道整个构建的成功状态以及前面的步骤 as mentioned here 。唯一缺少的步骤是“如果上一步失败则运行步骤”

    【讨论】:

      猜你喜欢
      • 2012-12-28
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 2013-09-22
      相关资源
      最近更新 更多