如何:Teamcity + GitHub
Posted
技术标签:
【中文标题】如何:Teamcity + GitHub【英文标题】:HowTo: Teamcity + GitHub 【发布时间】:2010-10-22 06:39:27 【问题描述】:是否有人成功配置 Teamcity 以从 GitHub 监控、提取和构建?
我似乎无法弄清楚如何在何处以及如何为 Teamcity 配置 SSH 密钥。我在系统帐户下将 Teamcity 作为系统服务运行。那么 Teamcity 将其 SSH 配置存储在哪里?
编辑
要让它工作,我需要阻止代理在系统帐户下运行。
【问题讨论】:
【参考方案1】:好的...我让它开始在我的 Windows 服务器上工作。以下是我配置TeamCity 4.5 Professional的步骤:
-
下载JetBrains Git VCS Plugin
将下载的zip文件复制到
.BuildServer\plugins
在“管理”>“编辑构建配置”>“编辑 VCS 根配置”屏幕中,我选择了“Git (JetBrains)”
从 GitHub 项目页面输入我的克隆网址
为身份验证方法设置“默认私钥”——这很重要
-
TeamCity BuildAgent 应该作为标准用户运行,并为该用户正确配置了 SSH 安装。
关注GitHub SSH directions for SSH configuration
【讨论】:
我已经使用私钥身份验证与 TeamCity 5.1.2 一起工作。运行构建代理的用户在其主目录中有一个私钥。在我将用户名留空之前,身份验证不起作用。我想我必须指定它,因为我的克隆 URL 属于另一个用户,但我假设它使用的是构建代理运行的用户。 请注意,如果您使用的是在 PuttyGen 中生成的 SSH 密钥,这将不起作用 - 我们花了很长时间在搞砸,然后在 GitBash 中使用 ssh-keygen 重新生成密钥,然后立即生效。 如果您没有将密钥存储在 C:\.ssh\config\ 上的标准 SSH 目录中,也无济于事。似乎没有可以告诉 TeamCity 它在其他地方的设置。 当 TeamCity 代理作为本地系统运行(其配置文件为 c:\windows\system32\config\systemprofile)和时,是否有人能够使用密钥(从 ssh-keygen 生成)具有非标准名称?根据他们的文档 (confluence.jetbrains.net/display/TCD5/Git+%28JetBrains%29),TeamCity 想要在我获得了“默认私钥”以与在 Windows 上以 SYSTEM 用户身份运行的代理一起工作。对我来说,答案是拥有身份文件
C:\Windows\SysWOW64\config\systemprofile\.ssh\id_rsa
而不是在
C:\Windows\System32\config\systemprofile\.ssh\id_rsa
【讨论】:
这似乎也是我的根本问题。 就是这个。这用 TeamCity 9 为我解决了问题:D【参考方案3】:您的问题是针对 SSH 的,但使用 TLS 上的 HTTP 肯定更容易、更快捷,因为 GitHub 和 TeamCity 现在都支持 HTTP 身份验证。此外,GitHub 还支持有限权限的personal api tokens,您可以根据自己的喜好进行配置,或者根据需要创建新用户。
请参阅下方的 TeamCity 设置图片。
【讨论】:
【参考方案4】:自 TeamCity 8.1 起,正式支持 SSH 密钥管理,请阅读此文档:https://confluence.jetbrains.com/display/TCD9/SSH+Keys+Management
【讨论】:
【参考方案5】:对于私钥,用户名必须为空。
【讨论】:
【参考方案6】:(这是对旧问题的最新答案)
我使用 github/gitlab 和 teamcity 7 构建了基于 ssh 的构建,如下所示:
登录 teamcity 机器并使用 puttygen/ssh-keygen 生成 rsa 密钥对并将 openssh 密钥保存在合理的位置。 (知道了 - 使用 puttygen?确保私钥是 openssh 格式 - puttygen > 转换 > 导出 openssh 密钥)
我建议你把私钥保存在
C:\.ssh\id_rsa
现在在 teamcity 中设置“默认私钥” - 创建一个文件
C:\.ssh\config
并在其中放置:
Host * IdentityFile c:\.ssh\id_rsa
登录到您的 gitlab/guthub 帐户并粘贴您的 teamcity 私钥的 openssh 公钥。
您现在应该可以在 teamcity 中创建一个 git vcs 根目录,该根目录可以使用默认私钥来拉取您的源代码。
【讨论】:
【参考方案7】:您可能需要像this这样的第三方插件
【讨论】:
对于未来的读者,当 JetBrains 为 TeamCity 中提供的 git 支持创建官方插件时,该插件已被弃用。【参考方案8】:我不知道为什么,但我选择 Default Private Key
失败了。
然后我选择Custom Private Key
,如下图所示:
Username
字段必须为空。
Passphrase
字段是您的私钥的密码
(假设你已经在git中添加了这个私钥的公钥。)
希望没有人像我一样被卡住!
【讨论】:
以上是关于如何:Teamcity + GitHub的主要内容,如果未能解决你的问题,请参考以下文章