"script" 进入 Jenkinsfile - 权限被拒绝

"script" step in Jenkinsfile - Permission denied

谁能解释一下,为什么我在“脚本”步骤中收到“权限被拒绝”?

我 运行 作为用户 vagrant 这个 Jenkins 工作。 我什至打印了所有信息:它确实是 vagrant 用户,属于 fred 组,该组是 /opt/ab/cd/tests/ 文件夹的所有者。不过尽管如此也无能为力,基本就好了mkdir

stage('Run tests') {
   BDD_RESULTS = sh (
      script: '(pushd /opt/ab/cd/tests/; whoami; groups vagrant; ls -la; mkdir my_test || true; popd)',
      returnStdout: true
   )
   println "BDD=$BDD_RESULTS"
   ...
}

结果:

+ whoami
+ groups vagrant
+ ls -la
+ mkdir my_test
mkdir: cannot create directory ‘my_test’: Permission denied
+ true
+ popd
[Pipeline] echo
BDD=/opt/ab/cd/tests/ ~/.jenkins/workspace/test-build
vagrant
vagrant : vagrant redis fred
drwxrwxr-x. 4 fred fred   179 Apr  1 21:13 .
drwxrwxr-x. 7 fred fred    92 Apr  1 21:13 ..
~/.jenkins/workspace/test-build

mkdir 只是一个例子,当然不是我尝试这样做的。

如果我将 tests 文件夹的权限设置为 777,那么它可以正常工作。但我想保留 775.

我 运行ning Jenkins 使用此命令:java -jar /home/vagrant/jenkins.war &> /home/vagrant/jenkins.out&,CentOS 7.7

将您的脚本放在 script 块下,然后尝试。

像这样


pipeline {

   stages {
      stage('Run tests') { 
         steps { 
            script {

                  BDD_RESULTS = sh (
      script: '(pushd /opt/ab/cd/tests/; whoami; groups vagrant; ls -la; mkdir my_test || true; popd)',
      returnStdout: true
   )
   println "BDD=$BDD_RESULTS"
   ...

   }
  }
 }
}