首页 > 解决方案 > 使用 ssh 将 codecommit 存储库克隆到 Codebuild 时遇到问题

问题描述

我需要从多个 Codecommit 存储库中获取一些文件到 Ubuntu Codebuild 实例上。所以我正在尝试使用 ssh 身份验证克隆存储库。我已经在实例上设置了 ssh 密钥和配置文件,当我执行git clone. 我expect用来响应第一次 ssh 连接提示。这是我的期望脚本,cloneRepo.sh

#!/usr/bin/expect

设置超时 20

生成 git clone ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/myrepo /tmp/myrepo

期望“您确定要继续连接(是/否)?” {发送“是\r”}

期望“解决增量:100% (*/*),完成。” {}

相互影响

当我在 Codebuild 中运行它时,一切看起来都很好:

[容器] 运行命令 echo "Cloning Git repositories"
克隆 Git 存储库

[容器] 运行命令 sudo ./cloneRepo.sh
spawn git clone ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/myrepo /tmp/myrepo
克隆到 '/tmp/myrepo'。 ..
无法确定主机“git-codecommit.us-east-1.amazonaws.com”的真实性。
RSA 密钥指纹是 a6:9c:7d:bc:35:f5:d4:5f:8b:ba:6f:c8:bc:d4:83:84。
您确定要继续连接(是/否)?是
警告:将 'git-codecommit.us-east-1.amazonaws.com' (RSA) 永久添加到已知主机列表中。

远程:
远程:计数对象:0
远程:计数对象:40,完成。
接收对象:2% (1/40)
...
接收对象:100% (40/40)
接收对象:100% (40/40), 6.66 KiB | 6.66 MiB/s,完成。
解决增量:0% (0/20)
...
解决增量:100% (20/20),完成。
解决增量:100% (20/20)

但是,/tmp/仍然为空:

[容器] 运行命令 ls -la /tmp/
total 8
drwxrwxrwt 2 root root 4096 Aug 1 02:04 。
drwxr-xr-x 22 根 4096 8 月 1 日 02:02 ..


它看起来像是某种权限错误,但我就是无法解决。

提前致谢!

标签: gitsshexpectaws-codebuildaws-codecommit

解决方案


我已经通过在期望脚本中添加sleep 10之前解决了这个问题。interact我认为当期望脚本结束并且 Codebuild 继续运行时,克隆过程并没有完全完成。添加暂停允许克隆完成。


推荐阅读