我们有一个 Jenkins CI 服务器,在 Ubuntu 上运行。我可以以
root
身份登录,但 jenkins
用户正在运行管道。作为管道的一部分,我想将图像推送到数字海洋登记处。
如果我作为
root
用户,我可以成功进行身份验证、登录和推送,但我无法使其作为 jenkins
用户(作为管道的一部分)工作。例如,如果我调用 sudo -u jenkins doctl auth init
,它想要写入 /root/.config
文件,当然,由于权限问题,这是不允许的。
不知何故,我希望能够运行连接到
doctl
用户而不是 jenkins
用户的 root
。将 doctl
命令安装到 jenkins
用户或强制使用用户 jenkins
的配置文件/文件夹。
(正如您可能发现的那样,我不是 Linux 专家。)
您不需要
sudo -u jenkins
- 您的 Jenkins 已经以用户 jenkins
身份运行。很正常
withCredentials([string(credentialsId: 'DO_API_TOKEN', variable: 'TOKEN')]) {
sh script: '''
doctl auth init --access-token "$TOKEN"
'''
}
显然,您需要首先将
DO_API_TOKEN
作为“秘密文本”添加到您的 Jenkins 凭证中。