这是我想要做的:
- 在git中推送到master分支
- 让gitlab-ci监听该推送并启动流水线
- 流水线构建代码并将docker容器推送到gitlab registry
- 流水线通过ssh登录到数字海洋(Digital Ocean)droplet中
- 流水线从gitlab registry中拉取docker容器
- 流水线启动容器
我可以轻松地完成前四步,但第四步总是失败。我尝试过使用ssh密钥的方法:
但那并没有起作用。
所以我尝试了明文密码的方法,就像这样:
image: gitlab/dind:latest
before_script:
- apt-get update -y && apt-get install sshpass
stages:
- deploy
deploy:
stage: deploy
script:
- sshpass -p "mypassword" ssh root@x.x.x.x 'echo $HOME'
这个版本的退出码是1
由于标准输入不是终端,因此不会分配伪终端。
ln: failed to create symbolic link '/sys/fs/cgroup/systemd/name=systemd': Operation not permitted
/usr/local/bin/wrapdocker: line 113: 54 Killed docker daemon $DOCKER_DAEMON_ARGS &> /var/log/docker.log
Timed out trying to connect to internal docker host.
有更好的方法吗?我至少如何从gitlab-ci构建环境内访问我的droplet?