TeamCity构建步骤设置

时间:2014-07-22 13:27:18

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

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

  1. 调用将dev分支合并到测试分支的控制台应用程序(in TFS)并在测试分支中手动修改一些文件 用于项目配置。这个过程非常完美 并已经过测试。另请注意,此步骤不会签入 合并文件或修改过的文件到测试分支。
  2. 此构建步骤将启动测试的实际解决方案构建 科。 (这是C#.NET,但我认为不重要)
  3. 此构建步骤处理任何SQL脚本的数据库迁移 添加。 (此步骤也已经过测试并且有效)
  4. 此步骤调用另一个控制台应用。即使先前的步骤失败,此步骤也将运行。如果构建成功,它将检查步骤1中的挂起更改,并进行构建的部署。如果构建在上一步中失败,它将撤消步骤1中的挂起更改。
  5. 这看起来很简单,但我步骤1和2之间的互动是我不知道该怎么做。如果我在第2步使用服务器端签出,它将从服务器中提取源,而不是在步骤1中使用我的更改。如果我使用代理端签出,我的理解是它将创建一个新工作区并从中提取源服务器,再次没有在步骤1中使用我的更改。

    我是否可以使用步骤1中创建的挂起更改来构建第2步?我能想到的唯一其他选项是在步骤1之后检入更改,如果构建失败,则在步骤4中回滚更改集。但是,在这种情况下,步骤4如何知道要回滚的变更集?


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

    谢谢!

1 个答案:

答案 0 :(得分:1)

如果您可以提供您正在使用的VCS名称(Git / SVN),那将非常有用。我看到你的问题主要是关于2个要点

  • 如果您正在使用Teamcity build Steps,那么在所有构建步骤中 是您不必担心的单个目标的一部分 步骤1和步骤2之间的互动。所有步骤都可以在同一个步骤中运行 目录 。您始终保留您的工作副本状态 子步骤。
  • 团队城中唯一的故障就是你不能只运行一个构建/步骤 上一步失败“。为了解决这个问题,你可以创建一个失败的原因 在任何前面的步骤中生成文件,并仅在该文件中运行构建 存在。删除每个构建结束时的文件只是为了确保 在下一次构建中没有意外问题。

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

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