开发团队在 Jenkins 构建期间更新构建 ID git 配置文件

问题描述 投票:0回答:1

是否有任何建议可以防止用户在构建期间更新构建 ID 的 git 配置文件?在构建过程中,一些开发团队正在运行 git config --global 命令并更改其应用程序的 git 配置文件设置,或者只是更改值并破坏其他团队的构建过程。无论如何,这个文件是否可以被锁定或阻止这些命令在 Jenkins 中运行?我们已尝试更改文件的权限,但没有成功。

感谢您的任何建议。

git jenkins build jenkins-pipeline git-config
1个回答
0
投票

一般来说,构建的最佳实践是使用一次性容器(或者,如果需要,虚拟机)来隔离构建。这意味着对构建系统的任何更改都不会保留,并且任何类型的不当行为都仅限于该构建。

更改

.gitconfig
文件的权限在这里没有帮助,因为当
git config
修改文件时,Git 会在旁边写入一个新的临时文件,并在原始文件上重命名。至少在 Unix 上,所需的权限是对包含该文件的目录具有写权限,而对文件本身的权限是不相关的。然而,这可能不方便,因为使构建用户的主目录不可写可能会阻碍构建。

由于您认为构建不应相互干扰,并且它们应该仅在指定的构建目录中构建,因此在所有构建的构建环境中设置

GIT_CONFIG_GLOBAL=/dev/null
可能很有用。这使得全局配置为空,如果有人尝试修改它,就会失败:

$ GIT_CONFIG_GLOBAL=/dev/null git config --global foo.bar baz
error: could not lock config file /dev/null: Permission denied

如果需要创建commits,可以将环境中的

EMAIL
设置为邮箱,
GIT_AUTHOR_NAME
GIT_COMMITTER_NAME
设置为名称,即可创建commits。如果您仍然需要其他配置,您可以将常规文件复制到临时文件并使用
GIT_CONFIG_GLOBAL
中的临时文件,这样任何不当行为都仅限于临时文件。如果你想让它因临时文件而失败,可以将其放在临时目录中,然后将临时目录设置为只读(比如500权限)以使修改失败。

我通常建议您选择其中一个选项,以激励团队阻止不良行为,特别是如果这也影响开发人员系统的话。如果我正在构建的任何工具以任何方式修改了我的 Git 配置,我会非常生气,因为我已经对其进行了非常定制,并且我确信至少有一些开发人员有同样的感觉。

© www.soinside.com 2019 - 2024. All rights reserved.