TeamCity On-Premises 2025.11 Help

命令行(脚本)

命令行 (位于 构建配置中)或 脚本 (位于 流水线中)是 TeamCity 中最灵活的构建步骤。 它在代理机器上直接运行命令,从而可与任何已安装的工具进行交互(例如 cURL、Homebrew、Python 或 Unreal Engine)。

您还可以将其作为特定工具的 TeamCity 步骤的替代方案使用。 例如,运行 mvn package 脚本,而不是使用带有 软件包 目标的 Maven 步骤。

步骤设置

脚本步骤设置及其对应的 UI 标签在配置构建配置或流水线时略有不同。

主要设置

运行

允许您在运行自定义脚本(在相应步骤设置字段中输入)或(当前仅适用于构建配置)启动具有所需参数的任意可执行文件之间进行选择。

脚本在类 Unix 环境中作为可执行脚本执行,在 Windows 上作为 *.cmd 批处理文件执行。 在 Unix-like OS 下,脚本被保存为具有可执行位的状态,然后由 OS 执行。 在大多数系统上,此项默认为 /bin/sh 解释器。 如果您需要使用特定的解释器,将 shebang (例如, #!/bin/bash )指定为脚本的第一行。

工作目录

构建步骤启动的目录。 默认情况下,这是代理签出远程资源的根目录。 有关更多信息,请参阅此主题: 构建工作目录

高级设置

将 stderr 输出格式化为

允许您选择该步骤应如何处理错误输出。 可用选项:

  • 错误 — 任何输出到 stderr 会被视为错误。

  • 警告 (默认)— 任何输出到 stderr 会被视为警告。

容器设置

此构建步骤可在由 Docker 或 Podman 部署的容器中运行。

传统构建配置步骤显示一组属性,允许您指定镜像名称、平台和附加运行参数。 显式拉取镜像 可确保 TeamCity 每次运行此步骤时都从目标容器拉取镜像。

Dk docker container settings

要为 TeamCity 指定拉取镜像的注册表,请将 Docker/Podman 连接 添加到项目中。 默认情况下,此连接允许 TeamCity 以匿名模式从 Docker Hub 拉取镜像,但您可以将其配置为使用任何容器注册表。

有关更多信息,请参阅以下文章: 容器包装器

启用 在 Docker 中运行 以在容器中运行步骤。 启用后,此元素会显示两个选项。

在容器中运行流水线步骤
  • Docker 镜像 — 允许您从 Docker 或 Podman 注册表中拉取镜像。 默认情况下,TeamCity 可在匿名模式下从 Docker Hub 拉取镜像。 对于其他情况(私有镜像、自定义镜像注册表、非匿名模式以避免违反 Docker Hub 速率限制),请在流水线或作业级别配置 Docker 集成

  • Dockerfile — 允许您从 Dockerfile 构建自定义镜像。

    配置即代码

    以下代码段展示了以 YAML (仅限流水线)和 Kotlin DSL 格式自定义的构建步骤。

    import jetbrains.buildServer.configs.kotlin.* import jetbrains.buildServer.configs.kotlin.buildSteps.script object YTApi : BuildType({ name = "Sample Build Configuration" steps { script { name = "Extract the list of issues from YT" id = "simpleRunner" scriptContent = """ curl -X GET "https://youtrack.mycompany.com/api/issues?fields=idReadable,summary,customFields(value(name),name)&query=Project:%20MyProject" \ -H "Authorization: Bearer ${'$'}YT_TOKEN" \ -H "Accept: application/json" \ -o response.txt """.trimIndent() } } })

    另请参见: ScriptBuildStep Kotlin DSL 文档

    jobs: Job1: name: Sample Job steps: - type: script script-content: >- curl -X GET "https://youtrack.mycompany.com/api/issues?fields=idReadable,summary,customFields(value(name),name)&query=Project:%20MyProject" \ -H "Authorization: Bearer $YT_TOKEN" \ -H "Accept: application/json" \ -o response.txt
    最后修改日期: 2025年 12月 17日