忽略SSH超时以继续Gitlab CI

忽略SSH超时以继续Gitlab CI,ssh,gitlab,gitlab-ci,Ssh,Gitlab,Gitlab Ci,我正在使用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 /myprojec

我正在使用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当然也有同样的问题…

您可以尝试在每个
ssh
之后添加
| true
,以始终返回Travis不会解释为错误的内容,但也会等待命令完成。

解决我问题的最佳方法是bash脚本

  • ping远程虚拟机
  • 如果vm响应ping:deploy