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" 的项目。
如果请求成功,将返回以下有效负载:
已签发的令牌将显示在父项目设置的 VCS 身份验证令牌 选项卡中。

特别说明
发送
POST请求的用户必须是相关 TeamCity 项目的 项目管理员。 仅该项目(及其子项目)可使用新签发的令牌。已签发令牌仅具有对请求正文中指定名称的仓库的访问权限。 无法签发可访问所有用户/组织仓库的不受限令牌。
TeamCity 将安装令牌的权限限制为用户在所选 GitHub 仓库中所拥有的最低权限级别。 因此,用户必须曾通过相应的 GitHub App 连接登录 TeamCity,例如通过“新建项目”页面登录或列出仓库。 或者,使用
X-TC-GitHub-PAT明确指定用户的个人访问令牌(PAT)。