Docker GitLab CI/CD SSH会话挂起在管道中
我正在使用GitLab CI/CD构建docker映像并将其推送到我的私有GitLab注册表 我能够从管道运行程序成功地通过SSH连接到服务器,但是传递到SSH会话的任何命令都不会运行 我试图从我的GitLab容器注册表中提取最新的映像,运行它,然后退出会话,以便优雅地(成功地)将数据传递到我的管道 我正在运行的命令是:Docker GitLab CI/CD SSH会话挂起在管道中,docker,gitlab,gitlab-ci,Docker,Gitlab,Gitlab Ci,我正在使用GitLab CI/CD构建docker映像并将其推送到我的私有GitLab注册表 我能够从管道运行程序成功地通过SSH连接到服务器,但是传递到SSH会话的任何命令都不会运行 我试图从我的GitLab容器注册表中提取最新的映像,运行它,然后退出会话,以便优雅地(成功地)将数据传递到我的管道 我正在运行的命令是: ssh -t user@123.456.789 "docker pull registry.gitlab.com/user/project:latest & docke
ssh -t user@123.456.789 "docker pull registry.gitlab.com/user/project:latest & docker run project:latest"
上面的命令将我连接到服务器,我看到了典型的欢迎消息,但是会话挂起并且没有运行任何命令
我曾尝试使用herdoc
格式一次传递多个命令,但一个命令都不能工作
任何建议都将不胜感激 对于测试,您可以尝试
ssh user@123.456.789 ls
要链接命令,请避免使用“&
”命令,因为它会导致
尝试:
如果可以,请尝试两个docker
命令,用“分隔代码>'
尝试使用(that)来分离docker进程,而不需要tty。尝试ssh-t时user@123.456.789“ls;pwd
ssh连接仍然位于motd屏幕上,并且没有输出。@confusedandamused您关闭了吗”?我在你的评论中看到的是“ls;pwd”,而不是“ls;pwd“@ssh在没有-t的情况下尝试ssh:这将分配一个TTY。这非常好!有没有一种简单的方法可以优雅地结束ssh会话-让映像运行?(这样CI/CD作业就通过了?)在有或没有-t的两种情况下,如果出现随机挂起的问题,它不会将控件返回到下一个命令…&将对进程进行后台处理,&如果进程1以成功的返回代码退出,则将链接进程。
ssh user@123.456.789 "ls; pwd"