Jenkins 以根用户身份在文件中运行命令
我有一个命令,它需要在JenkinsFile中使用root。但是当我在本地主机上运行它时,它会给出错误“sudonotfound”。JenkinsFile在源代码中Jenkins 以根用户身份在文件中运行命令,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我有一个命令,它需要在JenkinsFile中使用root。但是当我在本地主机上运行它时,它会给出错误“sudonotfound”。JenkinsFile在源代码中 stage('Install packages') { sh("docker run --rm -v `pwd`:/app -w /app node yarn install") sh("sudo chown -R jenkins: ./node_modules") } 我已经试过了。temp sh脚本是在每个构建上创建的
stage('Install packages') {
sh("docker run --rm -v `pwd`:/app -w /app node yarn install")
sh("sudo chown -R jenkins: ./node_modules")
}
我已经试过了。temp sh脚本是在每个构建上创建的。
错误是
/var/jenkins\u home/workspace/boilerplate\u master-2ESKZDF4PBIXGKODFFKIVAND5RN5VWF6QLEGRZ44LZGESCULVC4Q@tmp/durable-14d87eaa/script.sh:第1行:sudo:未找到
您将看到“sudo未找到”,因为您的docker映像上未安装sudo。
检查默认用户ID。即对于Maven,它是根用户(ID:0) 用户可以映射到ID,而不是名称
即主机上的用户ID为1000,对应于映像中的用户节点
sh “chown -R 1000 /mydir” /* Replace 1000 with actual user ID> */
如果用户ID匹配,上述命令将解决您的问题,否则它将为您的文件设置未知所有者
请尝试下面我根据您提供的Docker图像编写的Jenkins脚本
pipeline{
agent any
stages{
stage('test'){
steps{
script{
def image = docker.image('mhart/alpine-node:8.11.3')
image.pull()
image.inside() {
sh 'id'
sh 'ls -lrt'
sh 'node yarn install'
}
}
}
}
}
}
尝试以“jenkins”用户的身份运行以下命令:
stage('Install packages') {
sh("docker run --user='jenkins' --rm -v `pwd`:/app -w /app node yarn install")
}
如果Jenkins文件不是到处运行,那么编写它又有什么意义呢?我必须将每个系统的用户ID映射到主机ID。有什么解决方法吗?我们在Jenkins中广泛使用docker。我找到的唯一解决方法是使用与root用户一起运行的docker映像(docker社区不推荐),或者使用与主机的用户匹配的映像。当我执行
sh“chown-R 1000/mydir”
时,它返回了无效的spec1001
。您使用的是哪个docker映像?Jenkins用户的用户ID是什么?docker图像是mhart/alpine节点:8.11.3
,Jenkins用户的用户ID是1001。