Jenkins 为什么可以';难道詹金斯不复制这些文件吗?

Jenkins 为什么可以';难道詹金斯不复制这些文件吗?,jenkins,Jenkins,我是詹金斯的新手。我试图让它构建一个项目,然后将工件复制到一个特定的位置。我相信我的权限设置是正确的,但在运行构建步骤时,会出现“权限被拒绝”错误 代码是用Clojure编写的。詹金斯正确地从Github中提取了代码。然后詹金斯经营“莱恩尤伯贾”。文件已成功创建 我在Jenkins中有一个“执行shell”作为构建步骤。shell命令是: cp /var/lib/jenkins/jobs/api/workspace/target/*.jar /home/jenkins/api 如果我用ssh

我是詹金斯的新手。我试图让它构建一个项目,然后将工件复制到一个特定的位置。我相信我的权限设置是正确的,但在运行构建步骤时,会出现“权限被拒绝”错误

代码是用Clojure编写的。詹金斯正确地从Github中提取了代码。然后詹金斯经营“莱恩尤伯贾”。文件已成功创建

我在Jenkins中有一个“执行shell”作为构建步骤。shell命令是:

cp /var/lib/jenkins/jobs/api/workspace/target/*.jar  /home/jenkins/api
如果我用ssh连接到服务器,sudo连接到root,然后su连接到“jenkins”,我就可以运行上面的命令,它工作得非常好。但是,当Jenkins执行此操作时,输出包含:

+ cp /var/lib/jenkins/jobs/api/workspace/target/instaphoto-0.1-standalone.jar /var/lib/jenkins/jobs/api/workspace/target/instaphoto-0.1.jar /home/jenkins/api
cp: cannot create regular file ‘/home/jenkins/api/instaphoto-0.1-standalone.jar’: Permission denied
cp: cannot create regular file ‘/home/jenkins/api/instaphoto-0.1.jar’: Permission denied
Build step 'Execute shell' marked build as failure
Sending e-mails to: developer@sunflowerforce.com
Finished: FAILURE
如果我这样做:

groups jenkins    
cd /home/jenkins
ls -al 

drwxrwx---  4 jenkins run-server-software 4096 Jul 30 20:21 .
drwxr-xr-x  8 root    root                4096 Jul 30 18:59 ..
drwxrwxr-x  2 sunflower  run-server-software 4096 Jul 31 01:06 api
drwxrwxr-x 10 sunflower  run-server-software 4096 Jul 30 19:59 nlp
我明白了:

jenkins : jenkins root run-server-software    
如果我这样做:

groups jenkins    
cd /home/jenkins
ls -al 

drwxrwx---  4 jenkins run-server-software 4096 Jul 30 20:21 .
drwxr-xr-x  8 root    root                4096 Jul 30 18:59 ..
drwxrwxr-x  2 sunflower  run-server-software 4096 Jul 31 01:06 api
drwxrwxr-x 10 sunflower  run-server-software 4096 Jul 30 19:59 nlp

所以jenkins属于group run server软件,group run server软件应该有权在api等文件夹中执行任何操作。那么为什么我会被“拒绝许可”

你能试试
cp-f/var/lib/jenkins/jobs/api/workspace/target/instaphoto-0.1-standalone.jar/var/lib/jenkins/jobs/api/workspace/target/instaphoto-0.1.jar/home/jenkins/api
?如果你最近将
jenkins
添加到该组中,你可能必须重新启动jenkins(或服务器)。如果我必须重新启动服务器,我会感到惊讶。如果这是真的,我将失去对Linux的尊重。但我会尝试一下。只是为了确保:Jenkins的进程在用户
Jenkins?
A
whoami
下运行,然后在
cp…
中执行shell打印
Jenkins?
如果Jenkins不是以用户Jenkins的身份运行,那将是不可思议的,但我使用了“ps aux”并确定,jenkins是否以用户jenkins的身份运行:jenkins 31658 0.0 8.2 8549000 1268244?Sl Jul31 4:19/usr/bin/java-jar/home/jenkins/api//salesswick-0.1-standalone.jar