我是詹金斯的新手。我试图让它构建一个项目,然后将工件复制到一个特定的位置。我相信我已正确设置权限,但在运行构建步骤时出现“权限被拒绝”错误。
代码是用Clojure编写的。 Jenkins正确地从Github中提取代码。然后Jenkins跑“lein uberjar”。文件已成功创建。
我有一个“执行shell”作为Jenkins的构建步骤。 shell命令是:
+ 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
如果我ssh到服务器,并sudo到root,然后su到“jenkins”,我可以运行上面的命令,它完美地工作。但是,当Jenkins执行此操作时,输出包含:
groups jenkins
如果我这样做:
jenkins : jenkins root run-server-software
我明白了:
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
如果我这样做:
events = Event.objects.filter(
Q(date__gt=my_date) | Q(date__isnull=True)
).filter(type__in=[...]).order_by('date')
因此,jenkins属于组运行服务器软件,组运行服务器软件应该有权在api等文件夹中执行任何操作。那么为什么我得到“许可被拒绝”?