Linux Jenkins在git中处理文件权限的最佳实践

Linux Jenkins在git中处理文件权限的最佳实践,linux,git,jenkins,permissions,Linux,Git,Jenkins,Permissions,我在GitHook中创建了两个脚本,用于预提交以保存权限文件中所有文件的Linux权限,并在签出后使用权限文件恢复权限。如果我手动执行git克隆/签出/提交,这将很好地工作 但是,当我将Jenkins配置为签出项目时,它将运行以下命令: git签出-f 这将使用-f选项并尝试在取消链接的情况下丢弃本地更改。这将为我的项目抛出权限拒绝错误,因为Jenkins帐户没有删除某些文件的权限(例如,权限文件包含具有根所有者的文件的条目)。在这种情况下,使用Jenkins构建我的项目但保留文件权限的最佳方法

我在GitHook中创建了两个脚本,用于预提交以保存权限文件中所有文件的Linux权限,并在签出后使用权限文件恢复权限。如果我手动执行git克隆/签出/提交,这将很好地工作

但是,当我将Jenkins配置为签出项目时,它将运行以下命令:

git签出-f


这将使用-f选项并尝试在取消链接的情况下丢弃本地更改。这将为我的项目抛出权限拒绝错误,因为Jenkins帐户没有删除某些文件的权限(例如,权限文件包含具有根所有者的文件的条目)。在这种情况下,使用Jenkins构建我的项目但保留文件权限的最佳方法是什么?

我认为最好的方法是不更改root所有文件的权限。在钩子中添加此类文件的排除


但是如果你真的需要它,你可以使用
sudo
而不需要Jenkins帐户的密码。UPD:在钩子脚本中将
chmod
更改为
sudo chmod
,并在/etc/sudoers中添加类似于
jenkins localhost=NOPASSWD:/bin/chmod
的字符串,我想最好的方法是不要更改root拥有的文件的权限。在钩子中添加此类文件的排除


但是如果你真的需要它,你可以使用
sudo
而不需要Jenkins帐户的密码。UPD:在钩子脚本中将
chmod
更改为
sudo chmod
,并在/etc/sudoers中添加类似
jenkins localhost=NOPASSWD:/bin/chmod
的字符串,我的项目包含不同用户(root用户和其他用户)的文件,所以我确实需要它。如何将Jenkins配置为运行
sudo
?在钩子脚本中将
chmod
更改为
sudo chmod
,并在/etc/sudoersYes中添加字符串,如
Jenkins localhost=NOPASSWD:/bin/chmod
,我在签出后使用
sudo chmod
将文件权限修改为root。问题是当Jenkins执行git checkout-f时,它试图删除文件,但失败了。你知道我应该如何解决这个问题吗?使用
sudo chmod
应用权限后,git checkout-f无法删除某些文件我的项目包含不同用户(root用户和其他用户)的文件,因此我确实需要它。如何将Jenkins配置为运行
sudo
?在钩子脚本中将
chmod
更改为
sudo chmod
,并在/etc/sudoersYes中添加字符串,如
Jenkins localhost=NOPASSWD:/bin/chmod
,我在签出后使用
sudo chmod
将文件权限修改为root。问题是当Jenkins执行git checkout-f时,它试图删除文件,但失败了。你知道我应该如何解决这个问题吗?使用
sudo chmod
应用权限后,git checkout-f无法删除某些文件