以root身份在JenkinsFile中运行命令

时间:2018-11-08 07:46:22

标签: jenkins jenkins-pipeline

我有一个命令需要在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

2 个答案:

答案 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")
}