"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"
...
}
}
}
}
谁能解释一下,为什么我在“脚本”步骤中收到“权限被拒绝”?
我 运行 作为用户 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"
...
}
}
}
}