我有一个命令需要在JenkinsFile中使用root。但是,当我在本地主机上运行它时,会出现“找不到sudo”的错误。JenkinsFile在源代码中。
stage('Install packages') {
sh("docker run --rm -v `pwd`:/app -w /app node yarn install")
sh("sudo chown -R jenkins: ./node_modules")
}
我已经尝试过了。 How to run a script as root in Jenkins? temp sh脚本在每个构建中创建。 错误是
/var/jenkins_home/workspace/boilerplate_master-2ESKZDF4PBIXGKODFFKIVAND5RN5VWF6QLEGRZ44LZGESCULVC4Q@tmp/durable-14d87eaa/script.sh: line 1: sudo: not found
答案 0 :(得分:1)
由于您的docker映像上未安装 sudo ,因此您会看到“未找到sudo”。
检查默认用户的ID。
即对于Maven,它是root用户(ID:0)。
用户可能被映射到ID,而不是名称。
即主机上的用户ID为1000,该ID与映像中的用户节点相对应。
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'
}
}
}
}
}
}
答案 1 :(得分:0)
尝试以“ jenkins”用户身份运行此类命令:
stage('Install packages') {
sh("docker run --user='jenkins' --rm -v `pwd`:/app -w /app node yarn install")
}