忽略SSH超时以继续Gitlab CI

时间:2018-08-22 15:38:12

标签: 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 /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当然也遇到了同样的问题...

2 个答案:

答案 0 :(得分:1)

您可以尝试在每个|| true之后添加ssh,以始终返回某些内容,Travis不会将其解释为错误,但是还会等待命令执行完毕。

答案 1 :(得分:0)

针对我的问题的最佳解决方案是bash脚本。

  1. ping远程虚拟机
  2. 如果虚拟机回答为ping:部署