问题描述
任何人都可以解释一下,为什么我会收到权限被拒绝"的信息.在脚本"中步骤?
Can anyone explain, why I'm getting "Permission denied" in "script" step ?
我以用户 vagrant
的身份运行此Jenkins作业.甚至可以打印所有信息:确实是 vagrant
用户,属于 fred
组,该组是/opt/ab/cd/tests/文件夹.但是尽管那样却无能为力,就像基本的
mkdir
I run this Jenkins job as user
vagrant
.Am even printing all the information: it is indeed vagrant
user, belongs to fred
group which is the owner of /opt/ab/cd/tests/
folder. But despite that can not do anything, like basic 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
只是一个示例,当然,这并不完全是我尝试这样做的方式.
This
mkdir
is just an example, not exactly what I try to do this way, of course.
如果我在该
tests
文件夹上将权限设置为 777
,则它可以正常工作.但我想保留 775
.
If I set permissions on that
tests
folder to 777
, then it is working. But I would like to keep 775
.
我正在使用以下命令运行Jenkins:
java -jar/home/vagrant/jenkins.war&>/home/vagrant/jenkins.out&
,CentOS 7.7
I'm running Jenkins with this command:
java -jar /home/vagrant/jenkins.war &> /home/vagrant/jenkins.out&
, CentOS 7.7
推荐答案
将脚本放置在
script
块下,然后尝试.
Place your scripts under the
script
block and then try.
类似这样的东西
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"
...
}
}
}
}
这篇关于“脚本"Jenkinsfile中的步骤-权限被拒绝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!