我正在使用gitlab CI通过SSH在虚拟机上部署我的项目。在部署时,某些虚拟机可能会关闭,因此当我无法访问其中一个虚拟机时,我的工作就会失败。
这就是我在ci中所做的
- ssh -o StrictHostKeyChecking=no user@vm1 "mkdir -p /myproject/releases/$CI_COMMIT_TAG"
- ssh -o StrictHostKeyChecking=no user@vm1 "mkdir -p /myproject/releases/$CI_COMMIT_TAG/dev"
- rsync -az * user@vm1:/myproject/releases/$CI_COMMIT_TAG
在第一个ssh命令中,出现此错误:
ssh: connect to host vm1 port 22: Connection timed out ERROR: Job failed: exit status 1
如何忽略SSH超时以继续gitlab ci?
对我来说最好的解决方案可能是:
如果该虚拟机在大约20秒内没有“应答”,请忽略它,然后尝试部署到下一个虚拟机。
非常感谢:)
编辑:我的rsync当然也遇到了同样的问题...
答案 0 :(得分:1)
您可以尝试在每个|| true
之后添加ssh
,以始终返回某些内容,Travis不会将其解释为错误,但是还会等待命令执行完毕。
答案 1 :(得分:0)
针对我的问题的最佳解决方案是bash脚本。