配置连接
TeamCity 允许存储与外部服务连接的预设。 您可以在服务器的各个位置重复使用这些预设:创建项目时、配置通知时、与问题跟踪器集成时等等。 此文章提供了如何添加每一种类型连接的说明。
要添加连接,请执行以下操作:
打开 项目设置并导航到 连接设置选项卡。
单击 添加连接。 请注意,连接只能在其父项目及其子项目中使用。 如果您希望连接在全局范围内可用,请将其添加到 Root项目中。
选择连接类型,将其 Display name 设置为与其他连接区别的标识,并按照以下描述进行配置。

如果您的 TeamCity 服务器是 安装在代理服务器后面 ,那么在适用的情况下,确保这一点反映在连接设置中是非常重要的。 在为连接配置回调 URL 时,您需要指定当前服务器可以访问的所有 URL。
配置代理后,请记得在 TeamCity 的 全局设置 中将新地址设置为 服务器 URL。
在 TeamCity 中有两种类型的 Azure DevOps 连接:
Azure DevOps OAuth 2.0 允许通过 Azure DevOps Services 帐户登录 TeamCity,并从 Azure Git 仓库创建 TeamCity 项目。
Azure DevOps PAT 允许从 Azure Git 和 TFVC 仓库创建 TeamCity 项目。
这种连接类型仅支持 Azure DevOps Services。 它使用基于 JWT 令牌的 OAuth 2.0 协议 ,并需要在您的 Azure 个人资料中创建一个专用应用。
这种连接可以用于通过 Azure DevOps 对用户进行身份验证,以及创建项目和构建配置。
配置 Azure DevOps OAuth 2.0 连接:
打开 项目设置并导航到 连接设置选项卡。
单击 添加连接。 请注意,连接只能在其父项目及其子项目中使用。 如果您希望连接在全局范围内可用,请将其添加到 Root项目中。
在 连接类型下拉菜单中选择“Azure DevOps OAuth 2.0”。
确保启用 Enable unique callback URL设置,以生成添加到您的回调 URL 的唯一 ID。 此设置通过降低混淆攻击的风险来增强您的设置安全性:攻击者利用恶意授权服务器伪装成真实的授权服务器,诱骗目标客户端泄露授权代码(令牌)。 使用
/oauth/azuredevops/rid:your-unique-id/accessToken.html
URL 格式可确保攻击者无法手动伪造得到 TeamCity 认可的地址。note
每当您打开或关闭此设置时,回调 URL 会发生变化。 在 VCS 端更新 OAuth 设置。
每个连接的 ID 都是唯一的,包括现有连接的副本。 如果您在启用了此设置的情况下克隆连接,请记得更新您的 VCS OAuth 设置。
TeamCity 将显示注册 Azure DevOps 中 OAuth 应用所需的 回调 URL和 范围。
转到 Azure 中的 注册应用页面,并使用提供的参数创建一个新应用。 创建时,请复制应用的 ID 和客户端秘密。
返回到 TeamCity 中的连接表单,并输入 Azure DevOps Services URL、新的应用 ID 和客户端密钥。
指定应用范围,该范围必须与创建的 Azure DevOps OAuth App 的范围相同。
单击 Test connection以验证 TeamCity 是否可以访问您的资源,并保存您的新连接。
要在您的服务器上激活 Azure DevOps Services 认证,请继续启用相应的 认证模块。
这种类型的连接使用个人访问令牌。 它允许从 Git 或 TFVC 仓库 URL 创建一个 项目 ,创建一个 Azure DevOps VCS 根 ,或与 Azure Board Work Items 跟踪器进行集成。
要配置 Azure DevOps PAT 连接:
打开 项目设置并导航到 连接设置选项卡。
单击 添加连接。 请注意,连接只能在其父项目及其子项目中使用。 如果您希望连接在全局范围内可用,请将其添加到 Root项目中。
在 连接类型下拉菜单中选择“Azure DevOps PAT”。 打开的页面提供了将 TeamCity 连接到 Azure DevOps Services 时需要使用的参数。
请登录您的 Azure DevOps Services 帐户,创建具有 所有权限范围 的个人访问令牌,就如同 Microsoft 文档 所述。
继续在 TeamCity 中配置连接:在打开的 添加连接 页面上指定
以
https://{account}.visualstudio.com
格式的服务器 URL 或者您的 Azure DevOps Server 作为https://{server}:8080/tfs/
您的个人访问令牌
单击 Test connection以验证 TeamCity 是否可以访问您的资源,并保存您的新连接。
连接已配置,现在在几个可以指定仓库URL的地方激活了一个小的 Azure DevOps Services 图标: 从URL创建项目、 从URL创建VCS根目录 、创建 Azure DevOps Server 的 VCS 根目录,创建 Azure Board 工作项 跟踪器。 点击图标,登录到 Azure DevOps Services 并授权给 TeamCity。 TeamCity 将被授予对所有可用资源的完全访问权限。
在为托管在 TFS / VSTS 中的 Git 仓库配置 Commit Status Publisher 时,如果配置了 VSTS 项目连接,个人访问令牌可以自动填充。
tip
可以配置几个 VSTS 连接。 在这种情况下,服务器 URL 将会显示在 VSTS 图标旁边,用以区分正在使用的服务器。
连接到 Bitbucket Cloud 可以用来:
从 Bitbucket URL 创建一个 项目。
从 URL 创建一个 VCS 根目录。
创建一个 Mercurial VCS 根目录。
Bitbucket Cloud 连接表格提供了多个参数。 您需要使用它们来在 Bitbucket 中 创建新的 OAuth 消费者。
在创建消费者之后:
复制其密钥和密钥。
返回到 TeamCity 中的连接表单。
粘贴密钥和秘密。
保存连接。
在多个可以指定存储库URL的地方,Bitbucket图标将会变为可用状态。 点击以授权 TeamCity 访问您的 Bitbucket 个人资料。 TeamCity 将被授予访问您的仓库的权限。 如果您配置了多个 Bitbucket 连接,服务器 URL 将显示在每个图标旁边,因此更容易区分正在使用的服务器。
当前,与 Bitbucket Server 和 Data Center 的整合允许您:
为了让 TeamCity 能够访问 Bitbucket 数据,您需要在 Bitbucket 中创建一个传入的应用程序链接,以授予 TeamCity 所需的权限。
打开 项目设置并导航到 连接设置选项卡。
单击 添加连接。 请注意,连接只能在其父项目及其子项目中使用。 如果您希望连接在全局范围内可用,请将其添加到 Root项目中。
在 连接类型下拉菜单中选择“Bitbucket Server / Data Center”。
确保启用 Enable unique callback URL设置,以生成添加到您的回调 URL 的唯一 ID。 此设置通过降低混淆攻击的风险来增强您的设置安全性:攻击者利用恶意授权服务器伪装成真实的授权服务器,诱骗目标客户端泄露授权代码(令牌)。 使用
/oauth/bitbucketserver/rid:your_unique_id/accessToken.html
URL 格式可确保攻击者无法手动伪造得到 TeamCity 认可的地址。note
每当您打开或关闭此设置时,回调 URL 会发生变化。 在 VCS 端更新 OAuth 设置。
每个连接的 ID 都是唯一的,包括现有连接的副本。 如果您在启用了此设置的情况下克隆连接,请记得更新您的 VCS OAuth 设置。
在单独的浏览器标签页中,转到 Bitbucket 的 "管理 | 应用程序链接" 页面。
根据以下参数创建一个新的 应用链接:
应用类型: 外部应用
方向: 入站
重定向 URL: <从 TeamCity 新连接标签复制 URL>
应用程序权限: 在 "Repositories" 下勾选 "Write"
一旦应用链接准备就绪,Bitbucket 将生成 "Client ID" 和 "Client Secret"的值。 将这些值复制并粘贴到 TeamCity 新连接标签页的对应字段中。
单击 Test connection以验证 TeamCity 是否可以访问您的资源,并保存您的新连接。
TeamCity 允许您创建到常规 GitHub.com 实例和 GitHub Enterprise 的连接。
连接到 GitHub 可以用来:
从 GitHub URL 创建一个 项目。
从 URL 创建一个 VCS 根目录。
创建一个 Git VCS root。
整合一个 GitHub 问题跟踪器。
启用 GitHub.com 和 GitHub Enterprise 验证。
为 Commit Status Publiser 和 Pull Requests 构建功能提供访问令牌。
通过 GitHub Apps 的连接可以用来配置通知 TeamCity 服务器关于更改的 webhooks。
根据您的需求,您可以创建通过 GitHub Apps 或 GitHub OAuth Applications 运行的 GitHub 连接。
- GitHub 应用
一款 GitHub App 是一种集成,允许第三方服务,如 TeamCity,无需保持“服务”用户帐户的情况下连接到 GitHub 仓库。 与 GitHub OAuth 应用程序相比,GitHub 应用程序具有更细粒度的权限,并且授予您对应用程序可以访问的存储库的更多控制权。有关更多信息,请参阅本文: GitHub Apps 和 OAuth Apps 之间的区别。
此外,通过 GitHub App 连接创建的配置可以使用 GitHub Checks Webhook triggers ,替代传统的 VCS 触发器和 Commit Status Publisher 构建功能的组合。
如果您还没有合适的 GitHub App,您可以允许 TeamCity 注册它,并创建一个使用这个新应用程序的连接。 TeamCity 使用 manifests 来注册新的 GitHub Apps。
打开 项目设置并导航到 连接设置选项卡。
单击 添加连接。 请注意,连接只能在其父项目及其子项目中使用。 如果您希望连接在全局范围内可用,请将其添加到 Root项目中。
在 连接类型下拉菜单中选择“GitHub 应用”。 此连接类型适用于常规 GitHub 和 GitHub Enterprise 帐户。
选择 自动 创建模式,允许 TeamCity 从清单中注册 GitHub 应用程序。
指定您的 GitHub 服务器的 URL(不包含 "/用户名")并选择您是否希望此应用发送 post-commit hooks 和 / 或获取您的组织的访问权限。
如果新的 GitHub App 需要提供对组织仓库的访问权限,请将 Owner 设置切换到 Organization ,并在相应的字段中输入组织名称。
按照屏幕上的指示登录您的 GitHub 帐户,授权 TeamCity 注册应用,并将其安装到您的个人和/或组织帐户。
要手动创建新的 GitHub 应用并配置使用此应用的 TeamCity 连接:
重复上述列表中的步骤 1 至 3。
将连接的创建模式切换为 手动。
确保启用 Enable unique callback URL设置,以生成添加到您的回调 URL 的唯一 ID。 此设置通过降低混淆攻击的风险来增强您的设置安全性:攻击者利用恶意授权服务器伪装成真实的授权服务器,诱骗目标客户端泄露授权代码(令牌)。 使用
/oauth/githubapp/rid:your-unique-id/accessToken.html
URL 格式可确保攻击者无法手动伪造得到 TeamCity 认可的地址。note
每当您打开或关闭此设置时,回调 URL 会发生变化。 在 VCS 端更新 OAuth 设置。
每个连接的 ID 都是唯一的,包括现有连接的副本。 如果您在启用了此设置的情况下克隆连接,请记得更新您的 VCS OAuth 设置。
在另一个浏览器标签页中,导航到您的 GitHub 帐户,按照 TeamCity 连接描述中的指示创建一个新的应用。 请注意,GitHub 在此过程中将生成一个私钥 —— 请将此
.private-key.pem
文件保存在安全位置。打开您的 GitHub 应用的通用设置。 复制所需的值(App ID,client ID,client secret)并将它们粘贴到 TeamCity 对话框中。
如果您配置了一个 GitHub App webhook ,请设置其密钥,并将相同的值复制到 Webhook secret 字段。 GitHub 可以使用此 webhook 向 TeamCity 服务器发送通知,当库中发生改变时,应扫描该库,而不是让服务器不断地向 GitHub 轮询以获取变化。 另请参见: 配置 VCS 提交后挂钩。
输入所有者网址 —— 即该 GitHub App 安装的个人帐户或组织的链接。
上传由 GitHub 发送的私钥。
单击 Test connection以验证 TeamCity 是否可以访问您的资源,并保存您的新连接。
note
在您使用依赖 GitHub App 连接的功能(例如,创建新的项目或更新 Fetch URL)之前,TeamCity 需要您先登录到您的 GitHub 帐户。 可刷新访问令牌的权限取决于 GitHub 应用设置中的权限设置,以及您当前的 GitHub 用户的权限。 在权限不匹配的情况下,将使用最低的权限,而某些 TeamCity 功能可能无法使用。
例如,如果您的 GitHub 用户没有写入权限,那么将会以只读权限发放访问令牌。 因此,您配置的 Commit Status Publisher 特性将无法成功发布构建状态。
warning
TeamCity 目前为 GitHub App 连接发出单一仓库访问令牌。 因此,如果您的 GitHub 仓库包含有 submodules ,TeamCity 无法访问这些外部仓库。
- GitHub OAuth 应用程序
OAuth 应用程序生成用户访问令牌,并允许第三方服务如 TeamCity 代表获得授权的用户执行操作。
要创建一个利用 GitHub OAuth 应用的 TeamCity 连接:
打开 项目设置并导航到 连接设置选项卡。
单击 添加连接。 请注意,连接只能在其父项目及其子项目中使用。 如果您希望连接在全局范围内可用,请将其添加到 Root项目中。
在 连接类型下拉菜单中选择“GitHub.com 或 GitHub Enterprise”。
如果您还没有 GitHub OAuth 应用程序,请按照 TeamCity 的指示来 创建一个新的。
从 OAuth 应用的设置中复制客户端 ID 和密钥,然后粘贴到 TeamCity 对话框中。 对于 GitHub Enterprise,您还需要粘贴 GitHub 服务器的 URL。
单击 Test connection以验证 TeamCity 是否可以访问您的资源,并保存您的新连接。
note
如果您启用了 GitHub.com 认证 模块,并希望将 TeamCity 的访问权限限制为特定 GitHub 组织的用户,您需要确保所有这些组织都允许您的 OAuth 应用。 默认情况下,GitHub 不允许 OAuth 应用访问组织。 您可以为所有应用程序禁用此限制,或者只批准在每个所需组织中的 TeamCity 应用程序。 参考 GitHub 文档 以获取更多详情。
note
当您的 GitHub Enterprise 服务器配置了 HTTPS 端点时,如果端点的证书不是由知名商业认证机构颁发的,则连接可能会失败。 在这种情况下,您应该按照 这些说明更新 TeamCity 服务器的受信任证书。
一旦成功配置了连接,GitHub 图标将在可以指定仓库 URL 的几个地方变为活动状态。 点击它以在您的 GitHub 个人资料中授权 TeamCity。 TeamCity 将被授予您的私有仓库的全部控制权,并获得 编写仓库挂钩 的权限。 如果您配置了多个 GitHub 集成,服务器 URL 将显示在每个图标旁边,因此更容易区分正在使用的服务器。
GitLab 连接有两种类型: GitLab.com 适用于在 https://gitlab.com 站点托管的帐户,以及 GitLab CE/EE 适用于自我托管的 GitLab 社区版(CE)或企业版(EE)服务器上的帐户。
连接到 GitLab 可用于:
从 GitLab URL 创建一个 项目。
从 URL 创建一个 VCS 根目录。
整合一个 GitLab 问题跟踪器。
启用 GitLab.com 验证。
OAuth 应用程序生成用户访问令牌,并允许第三方服务如 TeamCity 代表获得授权的用户执行操作。
要创建一个使用 GitLab OAuth 应用程序的 TeamCity 连接:
打开 项目设置并导航到 连接设置选项卡。
单击 添加连接。 请注意,连接只能在其父项目及其子项目中使用。 如果您希望连接在全局范围内可用,请将其添加到 Root项目中。
在 连接类型下拉菜单中选择“GitLab.com 或 GitLab CE/EE”。
GitLab CE/EE连接专用:确保启用了 启用唯一回调 URL设置,以生成添加到回调 URL 的唯一 ID。 此设置通过降低混淆攻击的风险来增强您的设置安全性:攻击者利用恶意授权服务器伪装成真实的授权服务器,诱骗目标客户端泄露授权代码(令牌)。 使用
/oauth/gitlab/rid:your_unique_id/accessToken.html
URL 格式可确保攻击者无法手工创建 TeamCity 承认的地址。note
每当您打开或关闭此设置时,回调 URL 会发生变化。 在 VCS 端更新 OAuth 设置。
每个连接的 ID 都是唯一的,包括现有连接的副本。 如果您在启用了此设置的情况下克隆连接,请记得更新您的 VCS OAuth 设置。
如果您还没有 GitLab OAuth 应用程序,请按照 GitLab 的说明在以下范围之一中创建 OAuth 应用程序:
在 GitLab 中填写 Add new application 表单时:
为应用程序选择一个名称
将 TeamCity 对话框中的 Redirect URL 复制到 GitLab 表单中
在 Scopes 下,检查 api
点击 保存应用程序
note
对于 GitLab 实例级应用程序,有一个额外的 Trusted 复选框,当其启用时,会跳过用户授权步骤。
将 GitLab 应用设置中的 Application ID 和 Secret 复制并粘贴到 TeamCity 对话框中。
对于 GitLab CE/EE 连接,您还必须在 Server URL 字段中输入 GitLab CE/EE 服务器的基本 URL (例如,
https://gitlab.mydomain.com
)。 请注意,在 GitLab.com 连接的情况下,不需要此字段,因为基础 URL 总是https://gitlab.com
。单击 Test connection以验证 TeamCity 是否可以访问您的资源,并保存您的新连接。
note
当您的 GitLab CE/EE 服务器配置为 HTTPS 端点时,如果端点的证书未由知名商业认证机构签发,连接可能会失败。 在这种情况下,您应该按照 这些说明更新 TeamCity 服务器的受信任证书。
在多个可以指定仓库 URL 的位置,GitLab 图标将变为活动状态。 点击以在您的 GitLab 个人资料中授权 TeamCity。 TeamCity 将被授予访问您的仓库的权限。 如果您配置了多个 GitLab 连接,服务器 URL 将显示在每个图标旁边,所以更容易区分正在使用的服务器。
这种连接支持 Google 服务。 它使用 OAuth 2.0 协议。
此连接用于使用 Google 帐户在 TeamCity 中进行身份验证。
在配置 Google 连接之前,如果您以前没有做过,您需要 创建一个新的 Google 项目 并且 注册您的应用。
在 TeamCity 中配置 Google 连接:
打开 项目设置并导航到 连接设置选项卡。
单击 添加连接。 请注意,连接只能在其父项目及其子项目中使用。 如果您希望连接在全局范围内可用,请将其添加到 Root项目中。
在 连接类型下拉菜单中选择“Google”。
复制 TeamCity 显示的重定向 URL;这些 URL 是注册 OAuth 客户端所需的。
前往 Google 项目中的 Credentials 页,以 Web 应用类型创建 OAuth client ID。
将您的回调 URL 粘贴到 Google OAuth 客户端 ID 的 授权重定向 URI 部分。 当创建 OAuth 客户端时,复制客户端 ID 和客户端密钥。
返回到 TeamCity 中的连接表单,并输入客户端 ID 和客户端秘密。
单击 Test connection以验证 TeamCity 是否可以访问您的资源,并保存您的新连接。
现在,您可以启用 Google 认证模块。
Docker Registry 的连接可以用来:
在运行构建之前,请登录到经过身份验证的 Docker 注册表 / 构建完成后注销。
在构建后清理发布的镜像。
请在 专用文章 中查看更多信息。
Amazon Web Services(AWS)连接允许一次性定义 AWS 凭证,并通过 AWS Credentials 构建功能在构建中使用。 您可以使用不同的 AWS 凭据类型:访问密钥、IAM 角色和默认凭据提供者链。
在 TeamCity 中配置 AWS 连接:
打开 项目设置并导航到 连接设置选项卡。
单击 添加连接。 请注意,连接只能在其父项目及其子项目中使用。 如果您希望连接在全局范围内可用,请将其添加到 Root项目中。
在 连接类型下拉菜单中选择“Amazon Web Services (AWS)”。
为了区别其他连接,请为此连接提供一个名称。
Connection ID 字段会自动填充。 您可以修改它并提供您自己独特的 ID。
选择目标资源所在的 AWS 区域。
从 类型 下拉菜单中,选择一个凭证类型:
- 访问密钥
如果您选择了访问密钥作为凭据类型,请从 AWS 控制台的 身份和访问管理部分 获取密钥,并提供给 TeamCity。 查看如何获取这些密钥 此处 。在 TeamCity UI 的访问密钥部分,执行以下操作:
指定永久 访问密钥:
访问密钥 ID. 输入访问密钥 ID。
密钥访问密钥. 输入秘密访问密钥。
出于安全原因, 建议您定期更改访问密钥。 创建连接后,您将能够通过 轮换密钥 按钮执行此操作。
TeamCity 不会立即撤销旧的密钥。 生成新密钥后,TeamCity 将保留旧的非活动密钥24小时,然后将其删除。 旧密钥的生命周期可以通过以下属性进行更改:
teamcity.internal.cloud.aws.keyRotation.old.key.preserve.time.min
或teamcity.internal.cloud.aws.keyRotation.old.key.preserve.time.days
。为了能够成功地旋转访问密钥,TeamCity 需要
iam:GetUser
、iam:CreateAccessKey
和iam:DeleteAccessKey
权限。配置临时 会话设置:
使用会话凭据. 勾选框以使用通过 AWS STS 提供 临时访问 密钥的端点。 这种凭证的有效期较短(默认会话时间为60分钟)。 您可以在 AWS Credentials 构建功能 中覆盖默认的会话持续时间。 这些凭证不属于特定用户,可以根据需求提供,以授予对特定资源的临时访问权限。 我们建议使用临时凭证,因为它们能提供更好的安全性。
STS 端点.
当更改 AWS 区域时,TeamCity 会自动生成此字段。 因为速度更快且延迟更低,所以推荐使用区域端点。 recommended。 此外,所有对区域端点的调用都将作为任何区域服务调用在 AWS Cloud Trail 中被记录。
如果您需要为 Amazon 的替代品如 MinIO 指定一个自定义端点,请 联系 TeamCity 支持团队。
- IAM 角色
使用 IAM roles ,您可以将对您的 AWS 资源的访问权限委托给通常没有这些权限的用户、应用程序或服务。 这些实体将 承担此角色以获得此类访问权限。您只能在此 TeamCity 项目中已配置至少一个具有访问密钥或默认凭据提供链的 AWS 连接时,使用 IAM 角色作为凭据类型。
指定 IAM 角色:
AWS 连接. 选择将 授予指定 IAM 角色的 AWS 连接。 请注意,如果目标 AWS 连接属于父 TeamCity 项目,则必须启用此连接的 可用于子项目 设置。
角色 ARN. 指定您正在创建的连接需要承担的角色的 ARN。
配置 会话设置:
会话标签. 会话 tag 是 Amazon 所必需的。 在 AWS 日志中定位由 TeamCity 连接创建的会话非常有用。 TeamCity 会自动生成标签,但您可以指定自己的值。
STS 端点.
当更改 AWS 区域时,TeamCity 会自动生成此字段。 因为速度更快且延迟更低,所以推荐使用区域端点。 recommended。 此外,所有对区域端点的调用都将作为任何区域服务调用在 AWS Cloud Trail 中被记录。
如果您需要为 Amazon 的替代品如 MinIO 指定一个自定义端点,请 联系 TeamCity 支持团队。
在连接创建后,您可以查看并复制自动生成的外部连接 ID。 我们强烈建议您始终将其添加到 AWS 中的 信任策略 ,以防止 困惑的代理问题。 这确保只有经过授权的 TeamCity AWS 连接才能使用指定的 IAM 角色。
- 默认凭据提供程序链
选择此类型以根据 默认链 提供访问凭据。 此方法提供了存储明文凭据的替代方案。
使用此凭据类型时,TeamCity 按以下顺序搜索凭据:Java 系统属性:
aws.accessKeyId
和aws.secretAccessKey
。环境变量:
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
。从系统属性或环境变量中获取 Web Identity Token credentials。
# In ~/.aws/config [profile web-identity] role_arn=arn:aws:iam:123456789012:role/RoleNameToAssume web_identity_token_file=/path/to/a/token
Credential profiles 文件位于默认位置(
~/.aws/credentials
),所有 AWS SDK 和 AWS CLI 共享。# In ~/.aws/credentials [default] aws_access_key_id = your_key aws_secret_access_key = your_secret
默认位置可以通过
AWS_SHARED_CREDENTIALS_FILE
环境变量进行覆盖。如果设置了
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
环境变量且安全管理器可以访问,凭据将通过 Amazon EC2 容器服务提供。通过 Amazon EC2 元数据服务传送的实例配置文件凭证。
如果希望此连接对当前项目的所有子项目可用,请勾选 可用于子项目 选项。
勾选 可用于构建步骤 选项,以允许在 AWS 凭据构建功能功能设置中选择此连接。
单击 Test connection以验证 TeamCity 是否可以访问您的资源,并保存您的新连接。
note
请注意,如果您的 TeamCity 服务器托管在具有关联 IAM 角色的 AWS 实例上,该角色授予访问敏感资源的权限,使用 默认提供链凭据可能会带来安全风险:在这种情况下,配置此类连接的 TeamCity 项目管理员可以访问角色允许的所有 AWS 资源。
为降低此风险,默认禁用 默认凭据提供程序链 凭据类型。 要启用它,请设置 内部属性
teamcity.internal.aws.connection.defaultCredentialsProviderEnabled=true
(默认值为false
)。设置属性后,无需重新启动服务器。
配置的 AWS 连接可以为 AWS 凭据构建功能、 artifact S3 存储、 EC2 云配置文件和使用 IAM 角色的其他 AWS 连接提供凭据。
亚马逊 密钥管理指南 建议使用 IAM 角色,而不是访问密钥和静态 IAM 用户凭证。 由于 IAM 角色会发行短期凭证,这种方法可以在您的凭证被意外泄露(无意或由于安全漏洞)的情况下,尽可能地减少潜在的损害。
TeamCity 允许您的项目使用假设 IAM 角色的连接来访问所需的 AWS 资源,而无需依赖本地存储的凭证。
在 AWS 管理控制台中,转到 IAM 仪表板并导航到 角色 选项卡。
创建一个新的 IAM 角色 不附带任何权限。 我们将把这个角色称为 "角色A"。
将您的 TeamCity 服务器机器配置为使用此角色而不是本地存储的凭证来访问 AWS。 根据您的机器的具体类型,所需步骤可能会有所不同。
在 TeamCity 中,创建一个新的 默认凭据提供程序链 类型的 AWS 连接。 按 测试连接 以确保 TeamCity 使用您的空“Role A”。
如果希望子项目能够访问此新连接,请勾选 可用于子项目 选项。 否则,只有拥有此连接的同一项目才能使用它。
创建第二个 IAM 角色 ("角色 B") ,赋予其访问 AWS 资源 (例如,EC2 实例或 S3 桶) 所需的权限。
修改此新角色 B 的 信任关系 以允许角色 A 承担它。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "your-Role-A-ARN" }, "Action": "sts:AssumeRole" } ] }
在需要访问 AWS 资源的 TeamCity 项目中,创建另一个 AWS 连接。
类型 — “IAM Role”。
AWS 连接 — 在步骤 4 中创建的连接。
角色 ARN — “Role B”的 ARN。
请注意,如果您在拥有主“默认凭据提供链”连接的项目的子项目中配置此新连接,则必须启用此主连接的 可用于子项目 设置(请参见第 5 步)。
单击 测试连接 以确保 TeamCity 可以承担 角色 B。
Running STS get-caller-identity... Caller Identity: Account ID: <your account ID> User ID: <user ID:session> ARN: <Role B ARN>
保存您的新连接并重新打开它。 您现在应该可以看到连接的 外部 ID 值。
返回角色 B 的 信任关系 并添加额外条件:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "your-Role-A-ARN" }, "Condition": { "StringEquals": { "sts:ExternalId": "External-ID-copied-from-TeamCity" } }, "Action": "sts:AssumeRole" } ] }
因此,您现在有以下设置:
主要 默认凭据提供程序链 连接不需要本地存储的凭据。
这个共享的主要连接没有任何访问权限。 要访问 AWS 资源,需要假设其他 IAM 角色。
由于在第11步中配置的条件,只有配置了“IAM Role”的TeamCity连接才能假定具有实际访问权限的角色。 TeamCity 管理员不能创建更多使用这些角色的连接。
为了创建更多可以访问 Amazon 资源的连接,您的 AWS 管理员必须添加额外的条件,将这些新连接的外部 ID 添加到白名单中。
Amazon ECR(Elastic Container Registry)连接允许访问私有和公共的 AWS 注册表。 借助它, Docker 注册表连接 构建功能可以将构建生成的 Docker/Podman 镜像存储到 AWS。
连接设置:
设置 | 描述 |
---|---|
仓库类型 | |
AWS 区域 | (仅适用于私有注册表)请选择目标资源所在的 AWS 区域。 |
凭证类型 |
|
IAM 角色 ARN (仅适用于临时凭证) | 指定用于生成临时凭据的角色。 您需要在您的 AWS 控制台中 提前创建此角色 ,并为其分配您需要的所有权限。 |
外部 ID (仅适用于临时凭证) | 指定一个 external ID。 我们强烈建议您在使用临时凭证时始终进行定义。 这确保了只有 TeamCity 能够使用指定的 IAM 角色。 |
默认凭据提供程序链 | 启用此选项可以根据 default chain 自动找到访问凭证。 如果您不希望在 TeamCity 环境中的任何地方存储凭据,那么建议使用此方法。 默认情况下,它将使用 |
访问密钥 ID | 指定访问密钥 ID。 查看如何获取 这里。 |
密钥访问密钥 | 指定秘密访问密钥。 查看如何获取 这里。 |
注册表 ID | 请输入您的 account ID 号码。 |
这种连接类型用于通过 Slack 发送通知。
在配置 Slack 连接之前,您需要创建一个带有以下 机器人令牌范围 的 Slack 应用程序: channels:read
、 chat:write
、 im:read
、 im:write
、 users:read
、 team:read
、 groups:read
。 您可以在 Slack 应用的 功能 | OAuth 与权限 | 范围 中添加这些内容。
为确保您的 TeamCity 服务器可以连接到 Slack,请将服务器的所有可能端点地址指定为 重定向 URL ,位于 功能 | OAuth 与权限 中。 在大多数情况下,指定 TeamCity 中 全局设置 设置的 服务器 URL 就足够了。 但是,如果您为 TeamCity 服务器使用了代理但直接访问此服务器,则 Slack 中的身份验证可能无法正常工作,除非还在 重定向 URL 中指定了服务器的 IP 地址。
tip
请查阅此 Basic app setup 指南以获取更多详情。
现在,您可以返回到 TeamCity ,添加新的 Slack 连接,并输入以下连接参数:
来自应用 基本信息 页面的客户端 ID 和密钥
您的应用的一个 bot user token
配置的 Slack 连接被 Notifier 构建功能和 Service Messages 使用。
tip
如果您正在寻找如何将 JetBrains Space 实例与 TeamCity 集成的信息,请查看此 完整集成指南!
此类连接可用于:
使用 Commit Status Publisher 在 JetBrains Space 中发布构建状态。
在 TeamCity 中进行身份验证 ,使用 JetBrains Space 账号。
在 JetBrains Space 存储库中创建的 merge requests 上启动构建。
有两种方式可以配置 Space 连接:
自动化 —— TeamCity 配置具有所有所需权限的只读 Space applications ,并将其安装到您的 Space 实例中。
手动 — 需要您手动创建并安装 Space 应用程序,然后在 TeamCity 中设置连接设置。
要配置一个在 JetBrains Space 中存储的用于构建和部署的 TeamCity 项目,您需要两个独立的连接:
组织连接" — 存储常规连接设置的入口点,允许 TeamCity 访问您的 Space 实例。
项目连接 — 允许 TeamCity 访问一个特定的项目及其仓库。
您只需要在父级 TeamCity 项目中配置单个组织连接即可。 然而,要访问单独的 Space 项目,您将需要单独的项目连接。
配置组织连接:
打开 项目设置并导航到 连接设置选项卡。
单击 添加连接。 请注意,连接只能在其父项目及其子项目中使用。 如果您希望连接在全局范围内可用,请将其添加到 Root项目中。
在 连接类型下拉菜单中选择“JetBrains Space”。
在 创建模式 下选择 自动:组织连接。
输入新连接的名称并单击 创建 Space 应用程序。
TeamCity 将打开一个单独的浏览器窗口,允许您选择所需的 Space 实例:
Space Cloud — 单击所需 Space Cloud 实例旁边的 安装 ,或者如果您当前使用其他用户帐户登录,请单击 尝试另一个电子邮件。
Space On-Premises — 输入 Space 组织 URL 并单击 安装。
输入 Space 应用的名称和可选描述,然后单击 安装。
note
请注意,TeamCity 从 Administration | General settings 检索服务器 URL,并将此 URL 作为新创建的 Space 应用的端点。 在应用程序安装后,您将无法更新此端点,因此请验证 TeamCity 是否使用了正确的 URL。
单击 批准所有并返回 TeamCity 以授予新安装的 Space 应用所需的权限。
在组织连接配置并安装后,TeamCity具有权限安装其他应用程序并扫描项目列表。 添加新的构建配置或创建新的 VCS 根,选择组织连接作为源以查看此列表(您首次尝试需要授权给 TeamCity):

请注意,所有项目在初始时,其 Space 图标均为灰色的。 这意味着 TeamCity 尚无法访问这些项目中的仓库。 授予 TeamCity 所需的权限:
点击所需的项目。
单击 继续。 TeamCity 将创建并安装一个新的预配置应用程序,该应用程序具有访问此特定项目所需的所有权限。
遵照屏幕上的指示,导航至 Space 管理仪表板并批准这些权限请求。
您现在应该能看到所有已添加到此项目的仓库。 安装了允许 TeamCity 访问其仓库的应用程序的 Space 项目,将显示彩色的 Space 图标。

您可以添加更多的项目连接,以允许 TeamCity 访问同一组织内的额外 Space 项目。 为此,请导航到 项目设置 | 连接 并使用 自动:项目连接 创建类型创建新的 Space 连接。 一旦您在此项目(或其父项目)中添加了组织连结,这个选项便会变得可用。

单个 Space 项目连接也可以被 提交状态发布器 和 Pull Request 构建功能用来与项目仓库进行交互。 空间组织连接反过来允许您的用户使用他们的 Space 凭证在 TeamCity 中 登录。
由项目级自动连接配置的 Space 应用程序发出访问令牌,VCS 根和构建功能使用这些令牌来访问项目存储库。 这些访问令牌不包含个人信息,这意味着如果初始设置 TeamCity 项目并发放令牌的用户离开了您的组织,这些项目仍能正常运作,而无需更新。 有关可刷新令牌的更多信息,请参阅本文: 管理可刷新访问令牌。
配置到 JetBrains Space 的手动连接包括两个步骤:创建具有所需权限的 Space 应用程序,并在 TeamCity UI 中设置连接设置。
转到 Administration | Applications 并单击 新应用程序。
输入一个方便的名称并保存应用程序。
转到应用的 身份验证 选项卡,然后在 上下文授权 部分下单击 配置要求。 请输入您即将从 TeamCity 访问的 Space 项目的名称。
现在,您需要设置将授予此项目中应用程序的权限。 单击 配置 并启用以下权限:
需要进行身份验证和 Pull Requests:
成员 | 查看成员资料
需要 Commit Status Publisher:
Git 仓库 | 报告外部检查状态
代码审查评论 | 发表对代码审查的评论
需要进行拉取请求:
代码审查 | 查看代码审查
如果您是项目管理员,可以直接在此 身份验证 选项卡中批准项目级权限。 查看成员个人资料等全局权限,需要服务器管理员的批准。
返回应用程序的 概述 并打开 身份验证 选项卡。
启用 Client Credentials Flow。
为了能够通过 Space 在 TeamCity 中进行身份验证或者/以及从 Space 仓库创建项目/配置,请同时启用 Authorization Code Flow。 请输入您的 TeamCity 服务器的 URL 作为重定向 URI。 如果希望 TeamCity 将唯一 ID 添加到您的回调 URL,请从创建 TeamCity 连接开始,并从 添加连接 对话框中复制 URL。 此 URL 将如下所示:
.../oauth/space/rid:your-unique-id/accessToken.html
。 为了确保您的 TeamCity 服务器始终能够连接到 JetBrains Space,请指定服务器所有其他可能的端点地址。 在大多数情况下,指定 TeamCity 中 全局设置 设置的 服务器 URL 就足够了。 然而,如果您为您的 TeamCity 服务器使用代理,但直接访问此服务器,除非也在此处指定了服务器的 IP 地址,否则身份验证可能无法正常工作。复制应用程序的 Client ID 和 Client secret。
注释 :当您在 JetBrains Space 中创建项目时,您不会自动成为该项目的成员——这需要手动完成。 TeamCity 只能查看您被列为成员的那些项目。
当您的 Space 连接配置并安装好后,请返回到 TeamCity 并添加一个新的 JetBrains Space 连接。 在连接设置中,输入以下连接参数:
Space 服务器的 URL
您的 Space 应用的客户端 ID 和秘密
保存连接并继续添加 Commit Status Publisher 或 Pull Requests 功能, 启用 Space 认证 ,或创建一个 项目/构建配置/VCS 根。
Kubernetes 连接允许 TeamCity 访问您的 Kubernetes 资源。 这些连接可用于 将构建任务卸载到 K8s 集群。
打开 项目设置并导航到 连接设置选项卡。
单击 添加连接。 请注意,连接只能在其父项目及其子项目中使用。 如果您希望连接在全局范围内可用,请将其添加到 Root项目中。
在 连接类型下拉菜单中选择“Kubernetes 连接”。
指定 Kubernetes API server 的 URL。
请输入您的集群的 CA 证书 内容。
指定一个必需的 Kubernetes 命名空间。 留空则使用 默认命名空间。
选择所需的身份验证策略。 根据所选策略,额外选项的设置会有所不同。 请参考 Kubernetes 文档 ,了解可用选项的详细信息。
note
Token 策略接受 Kubernetes 支持的任何 token 类型。
单击 Test connection以验证 TeamCity 是否可以访问您的资源,并保存您的新连接。
这种类型的连接允许 Node.js runner在构建期间访问私有 npm registry。 由于项目可以有多个 NPM 注册表连接,您还需要 配置相关的构建功能 ,选择 Node.js 构建步骤应使用的连接。
连接设置:
设置 | 描述 |
---|---|
作用域 | 指定一个 npm 用户/组织的 范围 (带有或者不带有 如果您只想在此项目中使用一个注册表,请留空。 它将默认被
|
注册表URL | 以以下格式指定 npm 注册表 URL: |
访问令牌 | 如果需要访问注册表,指定一个 token。 留空以进行匿名访问。 请注意,基于令牌的身份验证可能会因注册类型的不同而有所不同。 参阅 npm Enterprise、 Space Packages 或 GitHub Packages 的说明。 |
保存连接并继续添加 NPM Registry Connection 构建功能。
这种类型的连接允许在您的 Perforce 服务器上处理 处理任务流。 在连接设置中,输入用于访问 Perforce 服务器的主机和用户凭据(用户必须具有 admin 权限)。
Thanks for your feedback!