Fastlane匹配无法通过SSH连接

时间:2019-04-09 12:30:34

标签: git jenkins ssh match fastlane

现有解决方案

在询问我的问题之前,我已经广泛搜索了SO和Github。现有的主题都没有为我们的设置提供任何可行的解决方案。

配置

我们已经在远程macOS机器上配置了Jenkins + Fastlane。 Fastlane match应该通过SSH从专用存储库中获取签名凭证(证书+配给配置文件)。

问题

SSH连接失败(挂起)。 Jenkins控制台输出:

INFO [2019-04-09 14:09:29.05]: Cloning remote git repo...
INFO [2019-04-09 14:09:29.05]: If cloning the repo takes too long, you can use the `clone_branch_directly` option in match.
INFO [2019-04-09 14:09:29.05]: [36m$ git clone ssh://git@xxx.xx.x.xxx:xxxx/cert/ios-certificates-profiles.git /var/folders/_redacted_[0m
INFO [2019-04-09 14:09:29.07]: ▸ [35mCloning into '/var/folders/_redacted_'...[0m
INFO [2019-04-09 14:09:29.19]: ▸ [35mThe authenticity of host '[xxx.xx.x.xxx:xxxx]:xxxx ([xxx.xx.x.xxx:xxxx]:xxxx)' can't be established.[0m
INFO [2019-04-09 14:09:29.19]: ▸ [35mRSA key fingerprint is _REDACTED_.

从同一台计算机上的终端运行“ git clone ssh://git@xxx.xx.x.xxx:xxxx / ...”命令:

  • 成功克隆存储库
  • 将主机添加到known_hosts文件

仍然詹金斯(Jenkins)一直挂在fastlane match命令上。为什么Jenkins无法通过SSH连接到存储库的任何想法?我想念什么?

修改

clone_branch_directly选项添加到match命令无效,该命令仍然挂起。

3 个答案:

答案 0 :(得分:1)

我在快速通道比赛步骤中冻结了Circle CI上的任务。原因是我在Linux上运行了“签出”步骤,并将其扔到MacOS VM上。因此,“ checkout”命令是在macOS机器上更新设置的,而ssh并不知道位桶的主机名。

通过在macos env作业中添加额外的“ checkout”命令来解决该问题。因为所有内容都是通过工作空间同步的,所以需要一些时间。

答案 1 :(得分:1)

我解决了类似的问题

ssh-keyscan myserver.com >> ~/.ssh/known_hosts

答案 2 :(得分:0)

首先尝试与在变量GIT_SSH_COMMAND设置为“ ssh -vvv”的环境中启动的Jenkins进行相同的操作:这将在Git尝试使用SSH URL进行克隆时为您提供完整的跟踪信息。

OP mmvie确认in the comments

  

向SSH添加详细日志记录显示Jenkins以sudo的身份运行。
  以sudo身份运行Jenkins not 并指向正确的SSH密钥即可解决此问题。


其他可能性:

fastlane issue 5473提到了known_hosts问题,但是如果已经添加了远程服务器指纹(假设您的Jenkins使用相同的帐户作为您自己的Shell会话运行),那么请检查您的私钥受密码保护:

  

FWIW,当我ssh-add -D然后运行fastlane certs(运行匹配项)时,我得到的行为完全相同。它挂在“克隆远程git repo ...”上,这是预期的行为。 'ssh-add'可以解决问题。

fastlane issue 7482相同:

  

想通了...在一个新盒子上,还没有将我的密钥添加到ssh-agent。

ssh-add -K ~/.ssh/id_rsa

其他可能性:fastlane issue 11732

  

我也在CircleCi 2.0上遇到了这个问题

     

在Circle 2.0的我的环境配置中进行设置会有所帮助

environment:
  TERM: xterm-256color

因此,请检查您的$TERM环境变量值。