我们有两种类型的项目,自由样式项目和多分支管道。我想拥有一个developer
角色,以获取对作业的只读访问权限,以分析管道日志和存档的工件。对于自由风格的项目而言,效果很好,但是对于多分支机构,处于开发人员角色的用户什么也看不到,显示消息“此文件夹为空”,并且不会出现触发的构建。有人可以给个灯光吗?
答案 0 :(得分:0)
您可以做的事情是,用一个Jenkinsfile创建2个不同的作业,其中分支“ develop”执行特定的任务(声纳法,单元测试等)。 “发布”分支执行集成任务。
示例:
stage 'Init'
node {
checkout scm
sh 'echo $ BRANCH_NAME'
}
if (env.BRANCH_NAME == 'develop') {
stage 'Only on develop'
println 'This happens only on develop'
} else {
stage 'Other branches'
println "Current branch $ {env.BRANCH_NAME}"
}
参考此link
答案 1 :(得分:0)
我遇到了同样的问题,发现不是完美的解决方案,但这是可行的。
一个要求: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
等)
,您想将其分离给不同的用户:
因此,在基于角色的插件中需要以下配置:
项目角色:
Product1模式-
^Product1*|.*_Product1*|(.*)feat(.*)|(.*)bug(.*)|(.*)hotfix(.*)|(.*)infra(.*)|(.*)develop(.*)
Product2模式-
^Product2*|.*_Product2*|(.*)feat(.*)|(.*)bug(.*)|(.*)hotfix(.*)|(.*)infra(.*)|(.*)develop(.*)
其中:
^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中的分支)