我遇到类似的问题: 如果我没有目标目录的权限,如何将文件复制为 Jenkins“构建后”操作
我愿意将文件从 jenkins 工作区移动/复制/rsync 到
/var/www/应用程序
权利设置为
阿帕奇:阿帕奇
我已将詹金斯添加到组中 阿帕奇,但是jenkins实例无法将文件复制到/var/www/app。
我也尝试过将 /var/www/app 的权限设置为 apache:jenkins 但 Jenkins 仍然不断吐出错误:权限被拒绝或操作不允许
PS:忘记添加操作系统是centOS;)
编辑1:这是jenkins脚本运行的日志:
[workspace] $ /bin/sh -xe /tmp/hudson1379987233097some_more_numbers.sh + sh /path_to_sh_script/script.sh 发送增量文件列表
应用/
rsync:无法在“/var/www/app/application”上设置权限:不允许操作(1)
这就是脚本本身:)
#!/bin/bash
rsync -avzh /path/to/jenkins/jobs/app/workspace/default/application /var/www/app ;
rsync -avzh /path/to/jenkins/jobs/app/workspace/default/library /var/www/app ;
rsync -avzh /path/to/jenkins/jobs/app/workspace/default/public /var/www/app ;
答案1
经过评论中长时间而富有成效的讨论,以及以下内容这个链接用户设法解决了添加的问题
--no-perms --omit-dir-times
到rsync
选项。
初步尝试解决该问题:
我想如果你在短时间内不关心安全问题,你可以尝试一下
chmod a+rwx /var/www/app
然后尝试写入该目录。请注意,如果有子目录,则必须递归执行:
chmod --recursive a+rwx /var/www/app
如果成功,那么您可以开始逐渐删除权限,这将帮助您查明问题。
验证用户 jenkins 是否已经是 apache 的组成员
groups apache
答案2
我有类似的问题。我想在 Jenkins 的本地主机上写入 /var/www 。在我的服务器上 /var/www 归 www-data 所有,因此我将 jenkins 添加到 www-data 组并使 /var/www 组可写,但不断收到权限被拒绝的错误。只需重新启动詹金斯服务就可以解决我的问题。
答案3
首先使用 SSH 和 ssh-key Exchange 将您的 Linux 或 apache 服务器添加到 Jenkin 服务器。并在 linux/apache 服务器中创建一个用户,用户名为 jenkin(unix 用户)。因为如果您使用 ssh 来拉/推文件,jenkin 会使用“jenkin”作为标准用户。
将 apache 用户添加到 unix 中的 jenkin 组可能会有所帮助。