配置构建步骤
一旦您拥有一个内含构建配置的 TeamCity 项目,您就可以配置 构建步骤。 构建步骤(也称为“作业”)是由 build runner 执行的任务。 一种构建配置可以包含多个步骤,这些步骤会依次执行。
构建步骤在 构建步骤 部分的 构建配置设置 页面上进行配置。 这个页面允许您:
手动添加新的步骤。
自动检测步骤通过扫描源 VCS 仓库来实现。
复制和删除步骤。
临时启用/禁用步骤。
为您的任务选择 Build Runner (构建运行程序)
每个构建步骤都由一个 build runner 表示,并提供与特定构建或测试工具的集成。 例如,在编译 VS 解决方案之前调用 NAnt 脚本。 您可以根据需要向您的构建配置中添加尽可能多的构建步骤。
这个视频教程解释了如何根据您的项目需求选择构建运行程序:
构建步骤执行
构建步骤会按顺序调用。
是否运行下一个构建步骤可能取决于前面构建步骤的退出状态,当前构建状态,或者 执行条件。
如果(1)构建过程返回的退出代码非零,并且(2)"如果构建过程的退出代码不为零,则构建失败" 构建失败条件已启用(参见 构建失败条件),则认为构建步骤失败;否则,构建步骤被认为成功。
请注意,构建步骤的状态和构建本身的状态可能会有所不同。 所有构建步骤都可能成功,但是由于另一个构建失败条件,构建可能会失败,这并不是基于退出代码(如,测试失败)。 另一方面,如果构建步骤失败了,那么构建也会失败。
关于配置单个构建步骤的详细信息,请参考本节内的相关页面。
执行策略
您可以通过 Execute step 选项指定步骤执行策略:
只有在构建状态成功时 - 在开始该步骤之前,构建代理向服务器请求构建状态,如果状态为“失败”,则跳过该步骤。 这考虑了服务器处理的故障条件,如测试失败或度量改变时的故障。 请注意,由于部分错误条件是在服务器上异步处理的(TW-17015),所以情况可能并不准确。
只有在构建状态失败时 — 与上述情况相同,但如果构建状态为 "成功",代理将跳过此步骤。 此条件允许您只在构建失败时添加执行步骤。 例如,您可以运行任务,以撤销对引入了问题的远程存储库所做的最新更改。
如果所有前面的步骤都已成功完成—— 构建只分析构建代理上的构建步骤状态,而不会向服务器发送请求以检查构建状态,并且只考虑重要的步骤失败情况。
即使一些前面的步骤失败了—— 选择使 TeamCity 无论前面步骤的状态和构建的状态如何都执行此步骤。
始终,即使发出了构建停止命令 — 选择此项以确保即使用户取消了构建,这个步骤也始终会被执行。 例如,如果您配置了两个步骤的此选项,在第一步执行过程中停止构建会中断此步骤,而第二个步骤仍将运行。 第二次发出停止命令将导致执行策略被忽略:构建将会被终止。
自 TeamCity 2020.1 起,您还可以为构建步骤添加精细的 执行条件。
自动检测构建步骤
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.<步骤_ID>
参数。 步骤 ID 显示在其名称下方,只有在创建它们时才可以编辑。
teamcity.build.step.status.<步骤_ID>
参数的可用值为:
成功
— 当一个步骤没有错误地完成时。失败
— 当一个步骤失败时。 即使所有构建问题都被静音,也会报告此状态。已取消
— 当该步骤运行时,构建被取消。
参数 teamcity.build.step.status.<步骤_ID>
只有在其对应的步骤完成后才会出现,而不是在构建开始的瞬间就可用。 这意味着既正在运行的步骤,也被跳过的步骤都无法获得其 teamcity.build.step.status.<步骤_ID>
参数。
您可以在构建结果页面的 参数选项卡 中检查所有步骤的状态...
...或通过 TeamCity REST API。
您可以使用这些参数来创建自定义 构建步骤执行条件。