我正在创建一个 Jenkins 管道,它从 centOS 创建自己的容器
使用 agent { dockerfile true }
然后它使用以下方法调用自定义脚本:
pipeline {
agent { dockerfile true }
stages {
stage('Build') {
steps {
sh 'whoami'
sh 'printenv'
sh './rpmBuild.sh'
}
}
}
}
然后问题是,当使用 sudo 调用任何命令失败时,它会给出
sudo: unknown uid xxx: who are you?
最佳答案
jenkins 无法识别的 UID xxx 是运行 jenkins 的服务器/ubuntu 系统中 jenkin 的用户 ID,并且管道正在 docker 容器内运行,而 jenkins id 不同。因此,在 docker 中无法识别 jenkins 服务器 ID。
所以,这对我有用:
更改自:JENKINS_USER=$NAME
到: JENKINS_USER="root"
在/etc/default/jenkins
这可以从管道的控制台输出中验证,该输出在开头说:
$ docker run -t -d -u 0:0 ....
这个 0:0 表示它以 root 用户身份运行。
当我遇到这个问题时,我用的是 xxx:yyy 而不是 0:0。
此 xxx:yyy 与运行 jenkins 的服务器/ubuntu 系统中的/etc/passwd 中的 jenkins 用户相同。
希望这可以帮助!!
关于docker - 在构建自己的容器的 Jenkins 管道中获取 "sudo: unknown uid xxx: who are you?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50646845/