配置构建步骤
一旦您拥有一个包含构建配置的 TeamCity 项目,您就可以配置 构建步骤。 构建步骤(也称为"job")是由 build runner执行的任务。 一种构建配置可以包含多个步骤,这些步骤会依次执行。
构建步骤在 构建步骤 部分的 构建配置设置 页面中配置。 这个页面允许您:
手动添加新的步骤。
自动检测步骤通过扫描源 VCS 仓库来实现。
复制和删除步骤。
临时启用/禁用步骤。
为您的任务选择 Build Runner (构建运行程序)
每个构建步骤都由一个 build runner 表示,并提供与特定构建或测试工具的集成。 例如,在编译 VS 解决方案之前调用 NAnt 脚本。 您可以根据需要向您的构建配置中添加尽可能多的构建步骤。
这个视频教程解释了如何根据您的项目需求选择构建运行程序:
构建步骤执行
构建步骤会按顺序调用。
是否运行下一个构建步骤可能取决于前面构建步骤的退出状态,当前构建状态,或者 执行条件。
如果 (1) 构建过程返回了非零退出代码,并且 (2) 启用了" Fail build if build process exit code is not zero "构建失败条件(请参阅 Build Failure Conditions ),则该构建步骤被视为 failed ;否则,该构建步骤被视为 successful。
请注意,构建步骤的状态和构建本身的状态可能会有所不同。 所有构建步骤都可能成功,但是由于另一个构建失败条件,构建可能会失败,这并不是基于退出代码(如,测试失败)。 另一方面,如果构建步骤失败了,那么构建也会失败。
关于配置单个构建步骤的详细信息,请参考本节内的相关页面。
执行策略
您可以通过 执行步骤 选项指定步骤执行策略:
仅当构建状态为成功时 — 在开始步骤之前,构建代理从服务器请求构建状态,如果状态为"failed",则跳过该步骤。 这考虑了服务器处理的故障条件,如测试失败或度量改变时的故障。 请注意,由于部分错误条件是在服务器上异步处理的(TW-17015 ),所以情况可能并不准确。
仅当构建状态为失败时 — 与上述相同,但如果构建状态为"success",代理将跳过该步骤。 此条件允许您只在构建失败时添加执行步骤。 例如,您可以运行任务,以撤销对引入了问题的远程存储库所做的最新更改。
如果所有先前步骤均成功完成 — 构建仅分析构建代理上的构建步骤状态,不向服务器发送请求检查构建状态,并仅考虑重要的步骤失败。
即使某些先前步骤失败 — 选择此项以使 TeamCity 无论前面步骤的状态和构建状态如何都执行此步骤。
Always, even if build stop command was issued — 选择此项以确保此步骤始终执行,即使构建被用户取消。 例如,如果您配置了两个步骤的此选项,在第一步执行过程中停止构建会中断此步骤,而第二个步骤仍将运行。 第二次发出停止命令将导致执行策略被忽略:构建将会被终止。
自 TeamCity 2020.1 起,您还可以为构建步骤添加精细的 执行条件。
引导步骤
在构建触发后,构建代理检出源文件之前,会执行一个 引导步骤。 这允许您添加一个运行器(通常是 命令行 运行器),该运行器执行初始设置并确保后续步骤按预期运行。
要启用 bootstrap steps,首先将 teamcity.internal.bootstrap.steps.enabled=true 条目添加到 TeamCity 内部属性 或单个项目(作为该项目的 配置参数)。 此设置使您能够执行以下操作:
在步骤设置中启用 在引导期间运行 选项。

在配置的 构建步骤 页面上,单击 重排构建步骤 并将所需步骤拖动到"Preparation stage"块之前。

您可以创建一个带有 bootstrap 步骤的构建配置,并将此配置变成一个 template。 这种模板允许您在实际构建过程开始之前快速创建更多执行所需前提操作的配置。
Meta-Runners 被视为一个单一步骤,因此不能拆分为在签出前后执行的部分。
要在 Kotlin DSL 中将常规步骤转换为引导步骤,请添加 teamcity.step.phase 参数并将其值设置为"bootstrap"。
自动检测构建步骤
TeamCity 能够扫描项目的源 VCS 仓库,并在 Node.js、Kotlin、Python、Ant、NAnt、Gradle、Maven、MSBuild、Visual Studio 解决方案文件、PowerShell、Xcode 项目文件、Rake 以及 IntelliJ IDEA 项目中自动检测构建步骤。
在 构建步骤 中,单击 自动检测构建步骤 ,然后选择您希望添加到当前构建配置中的建议步骤。 您可以在之后更改它们的设置。
当扫描存储库时,TeamCity 会逐步在源树的两个最高级别中搜索项目文件。 在搜索时,它会考虑文件的扩展名。 例如:
PowerShell:
.ps1.NET:
project.json,.proj,.csproj,.vbproj,.sln
如果检测到的步骤已经手动添加到此配置中,TeamCity 将跳过这些步骤。
步骤状态参数
TeamCity 提供了报告给定 ID 步骤状态的 teamcity.build.step.status.<step_ID> 参数。 步骤 ID 显示在其名称下方,只有在创建它们时才可以编辑。

teamcity.build.step.status.<step_ID> 参数的可用值为:
成功— 当一个步骤没有错误地完成时。失败— 当一个步骤失败时。 即使所有构建问题都被 静音 ,也会报告此状态。已取消— 当该步骤运行时,构建被取消。
参数 teamcity.build.step.status.<step_ID> 只有在其对应的步骤完成后才会出现,而不是在构建开始的瞬间就可用。 这意味着既正在运行的步骤,也被跳过的步骤都无法获得其 teamcity.build.step.status.<step_ID> 参数。
您可以在构建结果页面的 参数选项卡 中检查所有步骤的状态...

...或通过 TeamCity REST API。
您可以使用这些参数来创建自定义 构建步骤执行条件。