TeamCity On-Premises 2024.12 Help

与 Meta-Runner 一起工作

meta-runner 允许您从构建配置中提取构建步骤、要求和参数,并创建一个 构建运行程序。 这个构建运行程序可以像在任何其他构建配置或模板的构建步骤中使用其他构建运行程序一样被使用。

使用 meta-runners,您可以:

  • 重复使用现有的 runners

  • 为典型任务创建新的运行器(例如,发布到 FTP ,删除一个目录)

  • 简化您的构建配置,并减少构建步骤的数量

基本上,Meta-Runner (元运行器)是一套您可以在另一个中重复使用的构建步骤;它是一个 XML 定义,包含构建步骤、需求和参数,您可以在其他构建配置的 XML 定义中利用它。

TeamCity 允许使用网络用户界面提取Meta-Runner (元运行器)。

所有的 meta-runner 都保存在项目级别,因此它们只在此项目及其子项目中可用,并且在外部不可见。 如果Meta-Runner (元运行器)存储在 Root 项目级别上,那么它在全局范围内(所有项目中)都可用。

您可以使用 TeamCity Meta-Runners Power Pack 中现有的 meta-runner,或者创建您自己的 meta-runner。

使用 Meta-Runners 功能包

Meta-runners Power Pack for TeamCity ,可以在 GitHub 上找到,是用于各种任务的 meta-runners 收集,例如下载文件,触发构建,标记构建,更改构建状态,运行 PHP 任务等等。

每个 *MRPP_*.xml* 文件包含单个Meta-Runner (元运行器)的定义。 下载所需的 meta-runner(或将其定义复制到文件中),并按照下文中的说明进行安装。

安装 Meta-Runner

您可以通过 TeamCity 网页用户界面安装 meta-runner。 另外,您也可以直接通过文件系统来进行操作。

通过 Web UI 安装 meta-runner
  1. 导航到 管理 | <您的项目>以访问项目设置。

  2. 打开 Meta-Runners 设置选项卡。

  3. 单击 上传元运行器 ,并选择 meta-runner 定义文件。

  4. 保存您的更改。

直接安装 meta-runner 到文件系统

将 meta-runner 定义文件放入 <TeamCity Data Directory> \config\projects\<project_ID>\pluginData\metaRunners 目录中,其中 <project_ID> 是您希望放置 meta-runner 的项目标识符。 如果 metaRunners 目录不存在,请手动创建它。

一旦您将文件放置到磁盘上,TeamCity 将检测到它并加载 meta-runner;无需重启服务器。

如果 meta-runner 成功加载,您将在项目设置的 Meta-Runners 页面上看到它的列表;如果您有适当的权限,可以直接在 TeamCity UI 中修改定义。

现在,runner 已在 构建配置设置 | 构建步骤 页面上的构建 runner 列表中可用,并以便捷的 UI 形式表示为原生 TeamCity runner。

放置在项目中的 meta-runner 将对其所有子项目和构建配置可用。 要使Meta-Runner (元运行器)对所有项目可用,将其放在 Root 项目中。

创建 Meta-Runner

您可以通过 TeamCity 网页用户界面创建一个构建配置,并从中提取Meta-Runner (元运行器),或者使用现有构建配置的 XML 定义作为Meta-Runner (元运行器)。

从用户界面创建您自己的 Meta-Runner

让我们考虑一个创建 meta-runner 的例子。

要创建 meta-runner,请按照以下步骤操作(下面将更详细地描述):

  1. 准备构建配置以测试将在Meta-Runner (元运行器)中使用的构建步骤。

  2. 确保构建配置正常工作

  3. 将Meta-Runner (元运行器)提取到所需项目中

在此示例中,我们将创建一个Meta-Runner (元运行器),借助相应的 service message 将一些工件发布到 TeamCity。

通常,在构建配置中配置的工件会在构建完成后发布。 然而,有时对于具有多个构建步骤的长时间构建,我们需要更快地获取构建工件。 在此示例中,我们将创建一个可以插入到任何构建步骤之间,并可配置为发布先前步骤产生的构件的运行器。

准备构建配置

首先,需要准备一个构建配置,这将以与我们希望生成的 meta-runner 相同的方式工作。 让我们使用带有单个 Ant 构建步骤的配置:Ant 可以在任何 TeamCity 代理运行的平台上执行;此外,TeamCity 中的 Ant 运行器支持在运行器设置中直接指定的 build.xml。 这一点非常重要,因为我们的构建配置必须是自包含的——由于 meta-runners 不包含其源配置的 VCS roots,因此目标配置不能从版本控制仓库获取 build.xml。 在我们的例子中,Ant 步骤设置将如下所示:

添加 Ant 构建步骤

其中 artifact.paths 是一个系统属性。 我们需要在构建配置设置的 参数 选项卡中添加它:

在构建参数中的工件路径

请注意,每个参数都可以有一个规格,在该规格中我们可以提供标签、描述、控制类型并指定验证条件。

如果您的Meta-Runner (元运行器)包含需要访问远程仓库的文件和文件夹的步骤,请执行以下操作:

  1. 转到一个导入Meta-Runner (元运行器)的构建配置的设置。

  2. 切换到 版本控制设置 选项卡。

  3. 单击 附加 VCS 根 按钮。

  4. 附加现有 VCS 根 中选择与您的原始配置使用相同的根。

  5. 单击页面底部的 保存 并运行您的构建配置。 由于现在已经与 VCS 仓库建立了连接,构建步骤可以访问所需的文件,并能够成功完成。

验证构建配置是否正常工作

一旦定义了构建步骤和参数,我们需要通过运行几个自定义构建对话框中的构建来确保我们的构建配置正常工作:

运行自定义构建并附带艺术品路径

提取和使用 Meta-Runner

如果构建配置正常工作,我们可以通过单击 操作 按钮,在 构建配置设置 页面右上角并选择 提取元运行器 选项来创建一个 meta-runner:

提取 Meta-Runner

提取 Meta-Runner 对话框需要指定将创建 meta-runner 的项目。 在项目中创建的Meta-Runner (元运行器)将在该项目及其所有子项目中可用。 在我们的情况下,选择了 Root 项目,因此Meta-Runner (元运行器)将在所有项目中可用。

我们还需要为Meta-Runner (元运行器)提供名称、描述和 ID :在网络界面中会显示名称和描述,需要 ID 来区分这个Meta-Runner (元运行器)和其它的。

单击 提取 按钮后,TeamCity 将获取此构建配置中所有构建步骤和参数的定义,并从中创建一个构建 runner。

一旦Meta-Runner (元运行器)被提取,它就会在构建运行程序选择器中可用,名字就是它所属的项目名称,可以在任何构建步骤中像使用其它构建运行程序一样使用它:

发布 Artifacts 构建步骤

当前 meta-runner 的使用情况可以在项目的 Meta-Runners 页面上查看:

Meta-Runners

当Meta-Runner (元运行器)被提取时,所有步骤都将被提取。 如果您需要重新排序参数或快速修复 runner 脚本,可以在网络浏览器中编辑其原始 XML 定义:转到 项目管理 | 元运行器 并使用 meta-runner 旁边的 编辑 选项。 参数将按照与 XML 定义中的 <param> 元素相同的顺序显示。 meta-runner 的定义存储在 <TeamCity Data Directory> \config\projects\<project_ID>\pluginData\metaRunners 目录中。

根据构建配置的 XML 定义创建 Meta-Runner

或者,您可以使用现有构建配置的 XML 定义作为Meta-Runner (元运行器)。 为了实现此目的,将此构建配置的定义保存到一个名为 <runner_id>.xml 的文件中,其中 <runner_id> 是此构建运行程序的 ID。 按照上述 above 的描述安装 meta-runner。

由于Meta-Runner (元运行器)的外观和工作方式与其他任何运行器相同,因此也可以在现有Meta-Runner (元运行器)的基础上创建另一个Meta-Runner (元运行器)。

从 Meta-Runner 创建构建配置

如果您需要修复 meta-runner 并测试您的修复,可以从 meta-runner 创建一个构建配置,修改其步骤,调整参数和需求,检查其工作情况,然后使用 提取元运行器 操作将更改应用到具有相同 ID 的现有 meta-runner。

在容器中启动 Meta-Runners

由单个构建步骤组成的 meta-runner 具有允许 TeamCity 在 Docker/LXC 容器 中运行这些步骤的设置。 相同的设置也适用于 meta-runner 本身。

步骤和 meta-runner 中的容器设置

如果您希望所有步骤都在所需容器中执行,请在 meta-runner 级别设置所需的镜像。 单个步骤的容器设置优先于这些 meta-runner 设置,并允许您在其唯一的容器中运行每个步骤。

Kotlin 示例 的 meta-runner 在 "ubuntu" Linux 容器中运行其步骤:

object Build : BuildType({ steps { step { id = "SimpleMetaRunner" type = "idSimpleMetaRunner" executionMode = BuildStep.ExecutionMode.DEFAULT param("plugin.docker.imageId", "ubuntu") param("plugin.docker.imagePlatform", "linux") param("plugin.docker.pull.enabled", "true") param("plugin.docker.run.parameters", "") } } })

此 meta-runner 的 XML 标记如下所示。 步骤 #1 在 python:3.9.20-bullseye 容器中运行。 步骤 #2 没有单独的容器设置,并在上述 Kotlin 代码中定义的 ubuntu 容器中运行。

<meta-runner name="SimpleMetaRunner"> <description>A Py/CLI sample meta-runner</description> <settings> <parameters/> <build-runners> <runner name="Py" type="python-runner"> <parameters> <param name="plugin.docker.imageId" value="python:3.9.20-bullseye" /> <!-- Python step parameters --> </parameters> </runner> <runner name="" type="simpleRunner"> <parameters> <!-- CLI step parameters --> </parameters> </runner> </build-runners> <requirements /> </settings> </meta-runner>
最后修改日期: 2025年 4月 8日