管道设置
本文介绍用于整个管道的设置,这些设置定义了管道的通用行为。
编辑管道设置
若要查看和编辑核心管道设置,请点击右上角的 设置切换 ,然后点击可视化编辑器中作业周围的管道画布区域的任意位置。

您还可以从可视化编辑器切换到代码,直接编辑标记。
参数
参数是名称-值对,用于将原始值替换为引用。 当 TeamCity 遇到参数引用(%\形参名称% )时,会将其替换为实际的参数值。
TeamCity 支持两种参数层级:pipeline 参数和 job 参数。 流水线参数同时可作为输入参数和输出参数。
作业参数},{ 被设计用于这些作业,以及依赖它的作业(通过
job.<source-job-ID>.<param-name>语法)。 如需了解详情,请参阅 作业参数。管道输入参数 会在同一管道内的所有作业之间共享。 下方示例演示了一个管道参数被传递到两个作业中。
parameters: PipelineParam: foo jobs: Job1: name: Job 1 steps: - type: script script-content: 'echo "Pipeline parameter: %PipelineParam%"' # prints 'foo' Job2: name: Job 2 dependencies: - Job1 parameters: env.Job2Param: '%PipelineParam% bar' # job parameter references pipeline input param steps: - type: script script-content: |- echo "Original pipeline parameter: %PipelineParam%" # prints 'foo' echo "Modified pipeline parameter: %env.Job2Param%" # prints 'foo bar'当此管道作为 构建链 的一部分时, 管道输出参数 会共享给下游管道和构建配置。 单独设置此类型可让你更好地控制哪些参数可以 Exposed,哪些应保持私密。
请注意,输出参数无法在同一管道内使用。
parameters: PipelineInputParam: foo output-parameters: PipelineOutputParam: bar jobs: Job1: name: Job 1 steps: - type: script script-content: |- # Prints 'foo' echo "Input param: %PipelineInputParam%" # Unresolved reference: no compatible agents echo "Output param: %PipelineOutputParam%"有关构建链中参数的详情,请参见本节: 管道依赖项。
Secret
Secret 是受保护的参数,用于存储敏感数据。 您可以像使用常规参数一样引用它们,但其实际值在 TeamCity UI 与构建日志中均被隐藏。
如果您切换到管道的代码视图,您会注意到 secret 值被替换为用于存储这些值的 token 名称。 TeamCity 会自动创建这些 token,以避免通过远程存储的配置文件泄露 secret 数据。
以下代码段展示了可在管道的 集成 区域中替代密码使用的 secret。 尝试暴露该 secret 的命令行脚本会在构建日志中打印“Secret value: *******”行。
管道依赖项
本节允许在一个 构建链 中关联管道和构建配置。

在管道 "B" 的设置中为对象 "A" 添加依赖项时,将创建 "A → B" 链,其中:
对象 A 可以单独运行;
管道 B 启动时会自动触发对象 A。
"A" 可以是经典构建配置,也可以是其他管道。
管道依赖项有以下设置:

- 依赖于
请选择一个上游配置或管道,使其在当前编辑的管道启动前完成。
- 执行修订版本同步
指定是否应由 TeamCity 确保通过依赖项关联的两个对象使用相同修订的代码源。
修订同步已启用。 :建议用于需要使用相同源状态的设置。 例如,在 "A → B" 链中:"A" 从修订 1.2 开始,完成后被提升为 "B"。 构建 "B" 将在相同的 1.2 修订上运行,即使其最新修订为 1.4。
修订同步已禁用 :当构建没有严格的源依赖项时(例如软件包和部署步骤),请使用此设置。 此时,下游构建将使用最新可用的修订。 例如,在 "A → B" 链中:"A" 从修订 1.2 开始,完成后被提升为 "B"。 构建 "B" 将在其最新的 1.4 修订上运行,该修订与 "A" 不一致。
有关此设置对构建链影响的详细信息,请参阅 关闭了强制修订同步 部分。
- 如果有合适的构建,则不要运行新构建
如果启用此选项,那么如果已经存在具有适当源修订版本的正在运行或已完成的依赖构建,TeamCity 将不会运行新的依赖构建。 有关 TeamCity 用于确定可重用构建的标准信息,请参阅 合适的构建。
在此情况下,当触发依赖(下游)构建时,依赖项(上游)构建也会被加入队列。 然后,在收集到构建链的更改后,此依赖项构建将从队列中移除,并将依赖项设置为合适的已完成构建。
- 只使用合适的成功构建
新触发的构建只会使用成功完成的 合适构建 作为依赖。 如果最新完成的合适构建失败,它将被重新运行。
- 依赖项失败时、依赖项启动失败或被取消时
这些设置允许控制当依赖项(上游)构建失败时,依赖(下游)构建是否应运行,以及如果运行,同样的构建问题是否应出现在其结果中。
运行构建,但添加问题 :将运行依赖构建,并将问题添加到其中,状态更改为失败(如果问题之前未被静音)。
运行构建,但不添加问题 :将运行依赖构建,但不会添加问题。
将构建标记为启动失败 :依赖构建将不会运行,并将被标记为“ 启动失败”。
取消构建 :依赖构建将不会运行,并将被标记为“ 已取消”。
下面的代码段演示了如何在代码中设置依赖项。
自动运行流水线
此部分包括允许 TeamCity 在特定条件下自动运行管道的设置。 此功能以 触发器 形式提供。
有新更改时
这些设置会在 TeamCity 检测到仓库中的新更改时触发新的管道运行。 在经典 TeamCity 构建配置中,可通过 VCS 触发器 实现类似功能。
触发器设置定义哪些更改应启动新的运行。 使用 分支 切换选择稳定的仓库分支。 在下面的示例中,只有在更改提交至“production”分支时,TeamCity 才会自动运行管道。

拉取请求 切换会将拉取请求分支(例如 GitHub refs/pull/ 分支)包含在可用来源列表中。 请注意,仅当管道跟踪这些拉取请求分支时,才能启用该选项(请参见 存储库 部分)。
按计划
这些设置类似于经典构建配置的 计划触发器 ,可让您定义 TeamCity 运行管道的日期时间模式。

存储库
存储库 部分允许您在管道运行期间检出多个仓库。 TeamCity 会从所有已添加的仓库中获取来源,即使未配置任何作业来处理它们。

与管道一起自动创建的初始仓库项称为 主仓库。 该项不能删除,并包含额外的 YAML 文件存储选择器。

- 仓库 URL 与来源
核心仓库设置,可让您选择管道应检出的仓库。
主仓库已禁用。
- 默认分支和分支规范
这些设置定义 TeamCity 应跟踪哪些分支。 未被跟踪的分支将被完全忽略:不会向服务器报告更改,您无法对这些分支执行运行等操作。
- 拉取请求
启用此设置后,TeamCity 会在主管道页面的分支选择器中显示拉取(合并)请求分支。

您还可以启用 “有新更改时”触发器 的相关切换,让 TeamCity 自动构建传入的拉取请求。
- YAML 存储
指定管道 YAML 配置的存储位置:在 TeamCity 服务器或源仓库中。 另见: 在版本控制中存储项目设置。
这些设置仅适用于主仓库。
- 发布状态到存储库
启用该设置后,TeamCity 会将管道运行状态(运行中、成功、失败)上报至 VCS 托管服务提供商。 下图展示了 GitHub 如何呈现此信息。

对于经典构建配置,此功能通过 提交状态发布器 构建功能提供。
添加更多仓库时,可以选择复用已有连接或 VCS 根目录,或手动输入仓库 URL。

每个单独作业都可以选择其要检出的管道仓库。 有关更多信息,请参阅以下文章: 作业设置。
集成
pipeline 和作业设置面板都包含一个 集成 部分,用于连接私有 Docker 和 NPM 注册表。
在 pipeline 设置中,您可以管理作业可用集成的完整列表。
在作业设置中,开关允许您选择该作业应自动登录哪些注册表,从而确保构建步骤能够访问所需数据。
传统 TeamCity 构建配置通过“连接 + 构建功能”组合支持此功能:
Docker Registry 连接与 Docker 注册表连接 Docker 构建功能。
NPM Registry 连接与 相关构建功能 ,用于 Node.js 注册表。
如果某个项目中已有 Docker 或 NPM 连接,则该 pipeline 会在其“集成”部分下显示该连接。

这些继承的集成无法直接通过 pipelines 设置面板编辑,您需要在项目设置中修改其源连接。