在gitlab-ci.yml中使用sudo时如何避免密码?

时间:2018-03-28 14:25:40

标签: docker gitlab-ci gitlab-ci-runner

我有一个私人docker存储库,用于存储构建映像。 我复制了我的注册表证书并更新了我的/ etc / hosts文件,以便从我的本地计算机验证注册表。

我可以使用'sudo docker login -u xxx -p xxx registry-name:port'

登录注册表

但是当我从gitlab-ci阶段尝试相同的docker login命令时,它失败并出现此错误:

  

sudo:没有tty存在且没有指定askpass程序。

这就是我试图实现这一目标的方式。

ssh manohara@${DEPLOY_SERVER_IP} "sudo docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}"

我也尝试在/ etc / sudoers文件的底部添加这个gitlab-runner ALL=(ALL) NOPASSWD: ALL,但没有运气 我哪里错了?

1 个答案:

答案 0 :(得分:0)

根据此Source,您可以使用

ssh -t remotehost "sudo ./binary"

-t分配一个伪tty。

或者在你的例子中:

ssh -t manohara@${DEPLOY_SERVER_IP} "sudo docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}"