TeamCity On-Premises 2025.11 Help

InstallationToken 端点:如何以编程方式签发 GitHub 身份验证令牌

TeamCity GitHub App 连接可签发身份验证令牌,使 TeamCity 能够访问 GitHub 仓库。 通常在通过 UI 创建项目时自动发生,或者在 VCS 身份验证令牌 页面手动签发令牌。

<TeamCity_Server_URL/app/oauth/githubapp/installationToken 端点提供了一种无需使用 UI 即可生成这些令牌的替代方式。 在通过 REST API 配置构建配置和 VCS 根时尤为有用,因为它允许您以编程方式获取配置所需的令牌 ID。

主要属性

端点

/app/oauth/githubapp/installationToken

请求类型

POST

  • Content-Type:application/x-www-form-urlencoded

  • 接受:application/json

  • (可选) X-TC-GitHub-PAT: 一个 US-ASCII 字符串,对应您的个人 GitHub 访问令牌(在 GitHub 用户设置页面上签发)。 如果省略,TeamCity 将尝试通过检查其内部存储的现有令牌来识别用户及其权限。 有关更多信息,请参阅 特别说明 部分。

正文

一个包含以下密钥的 x-www-form-urlencoded 字符串:

  • projectId — 将拥有新签发身份验证令牌的项目的内部 ID。

  • connectionId — 用于签发新令牌的 GitHub App 连接的内部 ID。 默认情况下,其格式为 PROJECT_EXT_INT32

  • repositoryName — 新签发令牌可访问的仓库名称。 应省略用户名(使用“my-repo-name”而非“johndoe/my-repo-name”)。 允许您以 `repositoryName=name1&repositoryName=name2&...` 格式列出多个仓库。

    仅接受由安装了相应 GitHub App 的组织或用户所拥有的仓库名称。

回复

请求成功时返回 HTTP 200“OK”响应,并包含含以下字段的 JSON 有效负载:

  • tokenId — 新签发令牌的完整 ID。

  • 权限 — 描述已签发令牌访问权限的权限-值对列表。

  • 仓库 — 使用此令牌可访问的仓库名称数组。

  • personalAccessTokenSource — 返回 "USER_PROVIDED" 或 "TOKEN_STORAGE_LOOKUP",具体取决于用户的个人访问令牌是通过 X-TC-GitHub-PAT 请求头显式提供,还是由 TeamCity 检索。

请求失败时返回代码 400 “Bad request”。

以下 cURL 示例说明了如何使用 ID 为 "PROJECT_EXT_31" 的 GitHub App 连接签发具有访问 "sample-java-app-maven" 和 "HelpLinkGenerator" 仓库权限的令牌。 该令牌将归属一个 ID 为 "GitHubMavenJavaApp" 的项目。

curl --location 'http://your-server-URL/app/oauth/githubapp/installationToken' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Accept: application/json' \ --header 'X-TC-GitHub-PAT: ghp_foOBar1337' \ --header 'Authorization: Bearer 12345' \ --data 'projectId=GitHubMavenJavaApp&connectionId=PROJECT_EXT_31&repositoryName=sample-java-app-maven&repositoryName=HelpLinkGenerator'

如果请求成功,将返回以下有效负载:

{ "tokenId": "tc_token_id:CID_3183460fk032c31a4d92650323o03492:-1:1af54425-9b25-4f1e-8c63-66f062309abf", "permissions": { "CONTENTS": "WRITE", "METADATA": "READ_ONLY", "PULL_REQUESTS": "READ_ONLY", "ISSUES": "WRITE", "STATUSES": "WRITE", "CHECKS": "WRITE" }, "repositories": [ "sample-java-app-maven", "HelpLinkGenerator" ], "personalAccessTokenSource": "USER_PROVIDED" }

已签发的令牌将显示在父项目设置的 VCS 身份验证令牌 选项卡中。

通过项目 VCS 身份验证令牌页面上所示端点生成的令牌

特别说明

  • 发送 POST 请求的用户必须是相关 TeamCity 项目的 项目管理员。 仅该项目(及其子项目)可使用新签发的令牌。

  • 已签发令牌仅具有对请求正文中指定名称的仓库的访问权限。 无法签发可访问所有用户/组织仓库的不受限令牌。

  • TeamCity 将安装令牌的权限限制为用户在所选 GitHub 仓库中所拥有的最低权限级别。 因此,用户必须曾通过相应的 GitHub App 连接登录 TeamCity,例如通过“新建项目”页面登录或列出仓库。 或者,使用 X-TC-GitHub-PAT 明确指定用户的个人访问令牌(PAT)。

最后修改日期: 2025年 12月 17日