TeamCity On-Premises 2024.03 Help

提交状态发布器

Commit Status Publisher是一个构建功能,允许 TeamCity 自动将您的提交构建状态发送到外部系统。 该功能已作为一个与 TeamCity 一同捆绑的 开源插件 实现。

支持的系统:

从2022.04版本开始,Commit Status Publisher会在构建添加到队列后立即更新版本控制系统中的提交状态,为您提供最新的信息。 GitHub,GitLab,Space,Bitbucket Server 和 Bitbucket Cloud,Perforce Helix Swarm,以及 Azure DevOps 都得到了支持。

特定供应商的配置

GitHub

提交状态发布器支持以下格式的 GitHub URL:

  • 对于 GitHub.com : https://api.github.com

  • 对于 GitHub Enterprise : http[s]://<主机>[:<端口>]/api/v3

为了进行连接,请选择一个可用的认证类型:

  • Access Token — 使用个人访问令牌或通过 OAuth 连接获取令牌。 令牌必须具有以下范围:

    • 对于公开仓库: public_reporepo:status

    • 对于私有仓库: 仓库

    如果您有一个已配置的 OAuth 连接 到 GitHub,您可以点击魔术棒按钮让 TeamCity 自动获取相应的访问令牌。

    获取 GitHub 的访问令牌
  • GitHub App访问令牌—— 如果此项目或任何父项目具有有效的 GitHub App连接,那么Commit Status Publisher就可以使用通过此连接发出的令牌。 Acquire new按钮允许您立即重新发行访问令牌。 这个选项只有在 VCS Root 设置指向通过 GitHub App 连接配置的特定 VCS root 时才可用。

  • 使用 VCS 根目录的凭据 — TeamCity 将尝试从 VCS 根设置中提取凭据。 这个选项是为使用令牌(无论是静态/个人还是可刷新/OAuth)通过身份验证并使用HTTP(S)获取URL来获取仓库的VCS根设计的。 如果相关的 VCS 根使用匿名或标准的用户名-密码认证,或者使用 SSH 获取 URL,请选择其他选项。

  • Password — 提供 GitHub 用户名和密码。 请注意,如果连接到 GitHub Enterprise 存储库,或者用户的 GitHub 帐户受到两步验证保护,密码认证将无法工作。 在这些情况下,您应该使用访问令牌代替。

GitLab

认证类型选项允许您选择构建功能应使用哪种认证方法来访问 GitLab 仓库。

  • 个人访问令牌或 PATs 是您可以在 您的 GitLab 个人资料页面上发行的静态身份验证令牌。

  • 可刷新访问令牌是通过配置的GitLab OAuth 2.0连接发出的短期令牌。 点击旁边的 Acquire 按钮获取所需连接的访问令牌。

    获取 GitLab 的访问令牌
  • 使用 VCS 根证书—— TeamCity 将尝试从 VCS 根设置中提取证书。 这个选项是为使用令牌(无论是静态/个人还是可刷新/OAuth)通过身份验证并使用HTTP(S)获取URL来获取仓库的VCS根设计的。 如果相关的 VCS 根使用匿名或标准的用户名-密码认证,或者使用 SSH 获取 URL,请选择其他选项。

GitLab API URL 字段接受 http[s]://<主机名>[:<端口>]/api/v4 格式的 URL。 此字段为可选项:如果留空,TeamCity 将使用一个与 VCS 根设置中指定的获取 URL 相对应的值。

Bitbucket Cloud

要连接到 Bitbucket Cloud ,请确保 TeamCity 服务器 URL 是一个完全合格的域名(FQDN):例如,http://myteamcity.domain.com:8111。 短名称,如 http://myteamcity:8111 ,会被 Bitbucket API 拒绝。

对于 Authentication Type,您有以下选项:

  • 使用 VCS 根证书—— TeamCity 将尝试从 VCS 根设置中提取证书。 这个选项是为使用令牌(无论是静态/个人还是可刷新/OAuth)通过身份验证并使用HTTP(S)获取URL来获取仓库的VCS根设计的。 如果相关的 VCS 根使用匿名或标准的用户名-密码认证,或者使用 SSH 获取 URL,请选择其他选项。

  • 用户名/密码 — 指定一个用户名和密码以连接到 Bitbucket Cloud。 对于 Bitbucket Cloud 团队帐户,可以使用团队名称作为用户名,而 API 密钥作为密码。 我们建议您使用带有 Pull Requests | Read 权限范围的 app 密码

  • 可刷新的访问令牌 — 展示已配置的 Bitbucket Cloud OAuth 连接列表。 点击连接旁边的 Acquire 按钮,该连接将用于发出短期有效的 OAuth 令牌。

    Bitbucket Cloud 的 PR 令牌

Bitbucket Server

以下参数适用于 Bitbucket Server/Data Center 托管类型:

形参

描述

Bitbucket Server 基础 URL

指定 Bitbucket 服务器的基础 URL,格式如下: http[s]://<主机名>:<端口>

如果留空,URL 将从 VCS 根获取 URL 中提取。

身份验证类型

  • 用户名 / 密码 — 指定一个用于连接到 Bitbucket Server / Data Center 的用户名和密码。 您可以提交访问令牌,而不是密码。 令牌应具有对项目和仓库的 Read 权限。

  • 使用 VCS 根目录的凭据 — TeamCity 将尝试从 VCS 根设置中提取凭据。 这个选项是为使用令牌(无论是静态/个人还是可刷新/OAuth)通过身份验证并使用HTTP(S)获取URL来获取仓库的VCS根设计的。 如果相关的 VCS 根使用匿名或标准的用户名-密码认证,或者使用 SSH 获取 URL,请选择其他选项。

  • 可刷新的访问令牌 — 显示配置的 Bitbucket Server / Data Center OAuth 2.0 连接 的列表。 点击连接旁边的 Acquire 按钮,该连接将用于发出短期有效的 OAuth 令牌。

当您选择 可刷新的访问令牌 认证类型时,TeamCity 会显示一个由项目中配置的、对所有项目用户开放的 Bitbucket 服务器 / 数据中心的 配置过的 OAuth 连接 的列表。 如果一个令牌已经配置,TeamCity 会显示获取该令牌的用户信息和提供该令牌的连接信息。

要保护一个分支,并确保只有经过验证的拉取请求才能合并到其中,您可以在您的 Bitbucket 仓库设置中指定 必需的构建。 要将 TeamCity 构建设置为 必须构建,请打开 Bitbucket 中的 添加必须构建 页,并在 添加构建 字段中指定一个构建配置 ID 作为构建键。 在这种情况下,Bitbucket 不会允许合并拉取请求,直到请求更改的构建成功完成。

Azure DevOps

为了设置 Azure DevOps 的 Commit Status Publisher,指定您的 Azure 服务器 URL 并选择首选的身份验证方法。

  • 个人访问令牌 或 PAT 是您可以在 Azure DevOps 帐户设置 中发行的静态身份验证令牌。 您的发布令牌应具有 代码(状态)代码(读取) 权限范围,以允许 Commit Status Publisher 发布状态更新。 对于 VSTS connections,可以从连接设置中自动获取令牌。

  • 可刷新的访问令牌是通过配置的Azure OAuth 2.0 连接发布的短期令牌。 点击旁边的 Acquire 按钮获取所需连接的访问令牌。

    Azure OAuth 在 CSP 中

JetBrains Space

从2023.11版本开始,通过预设的Space connections设置的 TeamCity 构建配置不再需要配置 Commit Status Publisher 来发布构建状态。

使用 Space 连接设置项目,TeamCity 将自动在 Space 的 自动化 部分下,提交分支 标签下发布与构建相关的评论。

发布 Space 构建状态

也可以手动设置 Commit Status Publisher 功能。 如果满足以下条件,您可以选择手动设置:

  • 您希望设置自定义发布者名称和 / 或 Space 项目密钥;

  • TeamCity 无法自动发布构建状态(例如,如果您使用具有自定义配置的 JetBrains Space 的本地实例,可能会发生这种情况)。

要手动设置 Commit Status Publisher,您需要预定义的 Space connection。 如果您没有合适的连接,且您的项目是手动创建的或者来自存储库 URL,那么请前往 Project Settings | Connections 并创建一个新的连接。

然后,在构建配置的设置中:

  1. 打开 构建功能 并添加 提交状态发布器 构建功能。

  2. 选择 JetBrains Space 发行商和已创建的连接。

  3. 指定将在 Space 中为此服务显示的名称。

  4. 保存设置。

Perforce Helix Swarm

如果在 Perforce 的 shelved files 中运行构建,TeamCity 可以将其状态以评论形式报告给 Perforce Helix Swarm 中的相应代码审查。

在 TeamCity 中的个人构建

请参阅此帮助文章以获取更多信息:与 Perforce Helix Swarm 的集成

Gerrit

Commit Status Publisher 支持 Gerrit 版本 2.6+。 若要配置与早期 Gerrit 版本的集成,请联系我们的支持

使用 Commit Status Publisher

  1. 将构建功能添加到您的构建配置中。

  2. 如果您希望 Commit Status Publisher 尝试为所有已连接的 VCS 根发布提交状态,使用默认的 所有已连接的 VCS 根 选项,或选择一个单一的储存库来发布构建状态。

  3. 选择您的系统作为发布者,并指定其连接详细信息和凭证。

  4. 测试连接

  5. 保存您的设置。

示例:配置 Pull Requests 状态发布至 GitHub

以下示例演示了如何配置从 TeamCity 向 GitHub 发送包含在您的拉取请求中的构建状态更改。

  1. 使用 pull requests build feature 来配置 pull requests 分支。 您也可以通过在您的 VCS Root 中配置 分支规范 来使分支可用,同时确保它包括拉取请求分支(也可以参见相关的 博客文章)。

  2. 添加 Commit Status Publisher 构建功能:

    • 使用默认的 所有已连接的 VCS 根目录 选项,发布所有已连接的 VCS 根目录中的提交状态

    • 选择 GitHub 作为发布者,并指定其连接详细信息和凭据,然后测试连接:

      测试与 GitHub 的连接
  3. 保存您的设置。

  4. 将源代码的更改提交并在 GitHub 中创建拉取请求,然后在 TeamCity 中使用您的更改运行构建。 Commit Status Publisher 将会向您通报与您的拉取请求更改相关的构建状态:

    • 它将向您展示检查是否为:

      • 进行中 progress.png

      • 失败 Failed.png

      • 成功 Successful.png

    • 将鼠标悬停在提交状态上会显示构建摘要

    • 点击构建状态图标或详情链接,将在 TeamCity 中打开构建结果页面。 这些信息也可以在您的拉取请求细节的 Commits 标签页中找到。
      与上一页相似,点击构建状态图标将在 TeamCity UI 中打开 build results 页面:

    构建结果

使用 Commit Status Publisher 与 VCS 检出规则

如果构建的 VCS 根设置了 检出规则,那么 Commit Status Publisher 将只考虑符合这些规则的提交。 也就是说,如果构建开始前的最后一次提交不符合检出规则,它将不会被标记为构建状态;状态将显示在最后一次满足提交的旁边。

如果您需要在构建的最后一次提交旁边显示构建状态(例如,在拉取请求中),您可以调整检出规则,以便将此提交纳入 VCS 根的范围内。 或者,如果这是一个经常出现的问题,您可以考虑按照以下方式重新安排您的构建链:

  1. 配置主构建的签出规则。

  2. 配置一个实用工具 composite build,不包含构建步骤和检出规则,但包含 Commit Status Publisher 功能。

  3. 在复合构建中,为主构建配置一个 快照依赖

在这种链的范围内,Commit Status Publisher 将不受检出规则的约束,而构建状态将显示在最后一个提交旁边。

故障排查

TeamCity 写入事件与 Commit Status Publisher 构建功能相关到 teamcity-commit-status.log 文件。 将 "debug-commit-status" 预设应用于此日志,以包含 DEBUG 级别的事件。

最后修改日期: 16日 7月 2024年