我需要从多个Codecommit存储库中获取一些文件到Ubuntu Codebuild实例上。所以我正在尝试使用ssh身份验证克隆存储库。我已经在实例上设置了ssh密钥和配置文件,当我执行git clone
时会遇到麻烦。我正在使用expect
来响应第一次ssh连接提示。这是我的期望脚本cloneRepo.sh
:
#!/ usr / bin / expect
设置超时20
生成git克隆 ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/myrepo / tmp / myrepo
期望“您确定要继续连接(是/否)吗?” {发送 “是\ r”}
期望“解决增量:100%(* / *),完成。” {}
互动
当我在Codebuild中运行它时,一切看起来都还不错:
[容器]运行命令echo“克隆Git存储库”
克隆Git存储库[Container]运行命令sudo ./cloneRepo.sh
生成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 /
共8
drwxrwxrwt 2根根4096 Aug 1 02:04。
drwxr-xr-x 22根根4096 Aug 1 02:02 ..
这看起来像是某种权限错误,但我只是无法动弹。
谢谢!
答案 0 :(得分:0)
我通过在期望脚本中的sleep 10
之前添加interact
来解决此问题。
我认为,无论预期脚本结束还是Codebuild继续运行,克隆过程都没有完全完成。添加暂停可以使克隆完成。