我正在设置一个 Jenkins 服务器来构建 Unity 项目,因此除了一些参数(例如 Unity 版本)之外,所需的构建作业基本上总是相同的。
为了更容易配置新建作业,我创建了一个名为“TEMPLATE_JOB”的作业,因此对于未来的作业,我只需在创建新作业时选择“从模板复制”即可。
接下来我发现作业生成器插件它基本上做了同样的事情,但甚至更优雅一些。它基本上复制自身,用给定的值替换所需参数,当然还更改新生成的作业名称。
现在我的问题如下:
前面提到的两种解决方案都有一个大问题。由于它们是模板,配置是复制的,我不希望普通用户能够对它们进行任何更改,但仍能使用它们创建新的作业。
因此我尝试使用它Project-based Matrix Authorization Strategy
来限制普通用户配置模板作业。
但是如果我限制用户配置模板/作业生成器,那么权限和限制也会被复制=>用户可以创建作业,但不能再重新配置他们自己创建的作业。
我想要的是
- 只有管理员可以配置模板/作业生成器。
- 所有普通用户都可以配置生成的作业。
Jenkins 中是否有任何安全模型可以提供我尝试存档的功能?
答案1
据我所知,没有安全模型本身可以做到这一点,但你可以很容易地用下面的方法做到这一点:
- 不要给予普通用户创建新作业的权限。
- 创建一个模板作业,并且不给普通用户编辑它的权限。
- 创建另一个新作业,该作业从模板作业创建新作业。使其成为参数化作业,并使用用户传入的参数来配置新作业。授予普通用户运行此作业的权限。
所以现在,每当普通用户想要创建新工作时,他们都可以运行这个“创建新工作”工作。
您可能还想了解Jenkins文件和共享库,通过将作业定义写为代码并将通用代码放入共享配置中,允许更灵活的作业配置。
如果你从模板创建的作业恰好是针对新的 Git 存储库的,你可能还需要查看分支源插件Bitbucket和GitHub,通过发现 Bitbucket 或 GitHub 组织中的存储库自动创建新的 Jenkins 作业。