我们有两种类型的项目,一种是自由式,一种是多分支流水线。我想拥有一个 developer
角色来获得对作业的只读访问权限,以分析管道日志和存档的工件。对于自由式项目,效果很好,但对于多分支,开发人员角色中的用户看不到任何东西,会出现消息“此文件夹为空”,并且不会出现触发构建。有人可以点灯吗?
最佳答案
我有同样的问题,没有找到完美的解决方案,但它是有效的。
一个要求:GIT 中的分支命名应该是持久的,带有额外的前缀。例如:feat/branchName
。然后你可以通过这个前缀值过滤掉它。查看更多 branch naming in git flow
作为输入参数,您在其中包含项目和多分支管道。 例如:
Product1 -> Multibranch_pipeline_Product1 -> 不同的分支 前缀
feat
、bug
、infra
等(例如:infra/PRJ-135-reciepts-issues
、feat/PRJ-337-new-customer
等)Product2 -> Multibranch_pipeline_Product2 -> 不同的分支 前缀
feat
、bug
、infra
等(例如:infra/PRJ-876-new-env
、feat/PRJ-999-entity-creation
等)
并且您想为不同的用户将其分开:
- Developer1 - 仅访问 Project1 和 multibranch 中的分支 管道
- Developer2 - 仅访问 Project2 和其中的分支 多分支管道
- 开发人员 3 - 访问项目 1 和项目 2 多分支管道
因此您需要在基于角色的插件中进行以下配置:
项目角色:
产品 1 模式 -
^Product1*|.*_Product1*|(.*)feat(.*)|(.*)bug(.*)|(.*)hotfix(.*)|(.*)infra(.* )|(.*)开发(.*)
产品 2 模式 -
^Product2*|.*_Product2*|(.*)feat(.*)|(.*)bug(.*)|(.*)hotfix(.*)|(.*)infra(.* )|(.*)开发(.*)
哪里:
^Product1*
- 将授予对文件夹Product1
的访问权限
.*_Product1*
- 将授予对文件夹(多分支项目)的访问权限 -Multibranch_pipeline_Product2
(.*)feat(.*)|(.*)bug(.*)|(.*)hotfix(.*)|(.*)infra(.*)|(.*) develop(.*)
- 将允许访问前缀为feat
或bug
或hotfix
或infra 的所有分支
或develop
在此多分支项目中。
您应该为 Product2 做同样的事情。
总而言之,你应该: - Developer1 具有角色 Product1 - Developer2 具有角色 Product2 - Developer3 有两个角色,Product1 和 Product2
我测试了这个解决方案并且具有这样的配置权限不相交(Developer1 将无法访问 Product2 中的分支并且 Developer2 将无法访问 Product1 中的分支)
关于Jenkins 角色策略插件和多分支管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53015798/