Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 更改Jenkins构建工件文件所有权_Linux_Jenkins - Fatal编程技术网

Linux 更改Jenkins构建工件文件所有权

Linux 更改Jenkins构建工件文件所有权,linux,jenkins,Linux,Jenkins,我有一个Jenkins服务器正在构建一个Maven项目。当Jenkins构建此项目时,$WORKSPACE下的所有构建工件都具有文件权限Jenkins:Jenkins 在post步骤中,这些构建工件将被复制到/srv/myproject/,Tomcat实例将从那里为构建工件提供服务/srv/myproject/归tomcat7/tomcat7所有 由于java.io.FileNotFoundException/srv/myproject/somefile权限被拒绝,此post步骤失败,Jenki

我有一个Jenkins服务器正在构建一个Maven项目。当Jenkins构建此项目时,$WORKSPACE下的所有构建工件都具有文件权限Jenkins:Jenkins

在post步骤中,这些构建工件将被复制到/srv/myproject/,Tomcat实例将从那里为构建工件提供服务/srv/myproject/归tomcat7/tomcat7所有

由于java.io.FileNotFoundException/srv/myproject/somefile权限被拒绝,此post步骤失败,Jenkins报告无法将$WORKSPACE/somefile复制到/srv/myproject/somefile-Linux用户Jenkins不允许修改Linux用户tomcat7拥有的文件


如何更改Jenkins构建工件的所有权?我正在寻找考虑安全性的解决方案,例如,授予jenkins sudoer权限似乎并不明智。另外,将SRV/MyTea/**的所有权更改为詹金斯:詹金斯感觉更像是一个解决方案。

< P>您可以考虑为两个用户创建一个组,我们称之为FTP。< /P> 您可以将/srv/myproject/文件夹的所有权更改为ftp组:

将用户jenkins和tomcat7添加到ftp组:


现在用户詹金斯和ToMCAT7都应该能够访问/SRV/MyStudio。

< P>您可以考虑为两个用户创建一个组,我们称之为FTP。

您可以将/srv/myproject/文件夹的所有权更改为ftp组:

将用户jenkins和tomcat7添加到ftp组:


现在,jenkins和tomcat7用户都应该能够访问/srv/myproject。

也许您应该尝试归档zip、rar等。所有具有适当所有权的所需文件都保存到具有完全权限的文件中,例如具有777权限的archive.zip文件,因此,当您取消归档时,您将获得文件的正确所有权。

也许您应该尝试归档zip、rar等。所有具有正确所有权的所需文件将保留到具有完全权限的文件中,例如具有777权限的archive.zip文件,因此,当您取消归档时,您将获得文件的正确所有权。

将文件部署到服务中并不是Jenkins真正的目的。如果这是目前最适合您的解决方案,那么您可能应该以tomcat用户的身份运行部署脚本;也就是说,在Jenkins shell脚本中使用sudo或等效工具

有更好的解决方案你应该考虑。< /P> 如果您计划在将来显著扩展此功能,那么使用Puppet、Vagrant、Chef、Powershell DSC或任何数量的替代品进行声明性环境配置都是不错的选择。 如果您确信您永远不会需要超过几个部署,例如共享开发环境、验收测试环境、暂存x2、生产x2,仅此而已。。。然后Jenkins的工作应该构建某种类型的安装程序dpkg、yum文件、ZIP文件、msi。。。一个小型的自动化、可重复和可控的过程可以围绕这一点构建。它甚至可以由詹金斯触发!
将文件部署到服务中并不是Jenkins真正的目的。如果这是目前最适合您的解决方案,那么您可能应该以tomcat用户的身份运行部署脚本;也就是说,在Jenkins shell脚本中使用sudo或等效工具

有更好的解决方案你应该考虑。< /P> 如果您计划在将来显著扩展此功能,那么使用Puppet、Vagrant、Chef、Powershell DSC或任何数量的替代品进行声明性环境配置都是不错的选择。 如果您确信您永远不会需要超过几个部署,例如共享开发环境、验收测试环境、暂存x2、生产x2,仅此而已。。。然后Jenkins的工作应该构建某种类型的安装程序dpkg、yum文件、ZIP文件、msi。。。一个小型的自动化、可重复和可控的过程可以围绕这一点构建。它甚至可以由詹金斯触发!
如果复制必须作为本地操作进行,则使用注释中已经描述的linux用户/组/ACL


如果可以不进行本地复制,那么可以为tomcat用户启用ssh访问,并通过设置正确的规则使用sftp/rsync上载工件。性能损失不会太大,但您将能够删除本地环境锁,并能够在将来上传到任何环境中。

如果必须作为本地操作进行复制,则使用注释中已经描述的linux用户/组/ACL


如果可以不进行本地复制,那么可以为tomcat用户启用ssh访问,并通过设置正确的规则使用sftp/rsync上载工件。性能损失不会太大,但您将能够删除本地环境锁,并能够在将来上传到任何环境中。

jenkins和tomcat7是否都属于一个名为ci_build的共享组?我不确定这是否提供了比您已经建议的更多的安全性,但只是让事情更清楚一点-为什么Tomcat文件归jenkins所有?在“srv/myproject”的用户组中添加用户“jenkins”如何?jenkins和tomcat7是否都属于名为somethi的共享组
你喜欢什么?我不确定这是否提供了比您已经建议的更多的安全性,不过这只是让事情更清楚一点-为什么Tomcat文件归jenkins所有?在“srv/myproject”的用户组中添加用户“jenkins”如何?
sudo chown -R :ftp /srv/myproject
sudo usermod -a -G ftp jenkins
sudo usermod -a -G ftp tomcat7