现有解决方案
在询问我的问题之前,我已经广泛搜索了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 / ...”命令:
仍然詹金斯(Jenkins)一直挂在fastlane match命令上。为什么Jenkins无法通过SSH连接到存储库的任何想法?我想念什么?
修改
将clone_branch_directly
选项添加到match命令无效,该命令仍然挂起。
答案 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进行克隆时为您提供完整的跟踪信息。
向SSH添加详细日志记录显示Jenkins以
sudo
的身份运行。
以sudo身份运行Jenkins not 并指向正确的SSH密钥即可解决此问题。
其他可能性:
fastlane issue 5473提到了known_hosts问题,但是如果已经添加了远程服务器指纹(假设您的Jenkins使用相同的帐户作为您自己的Shell会话运行),那么请检查您的私钥受密码保护:
FWIW,当我
ssh-add -D
然后运行fastlane certs
(运行匹配项)时,我得到的行为完全相同。它挂在“克隆远程git repo ...”上,这是预期的行为。 'ssh-add
'可以解决问题。
想通了...在一个新盒子上,还没有将我的密钥添加到ssh-agent。
ssh-add -K ~/.ssh/id_rsa
其他可能性:fastlane issue 11732:
我也在CircleCi 2.0上遇到了这个问题
在Circle 2.0的我的环境配置中进行设置会有所帮助
environment:
TERM: xterm-256color
因此,请检查您的$TERM
环境变量值。