Jenkins角色策略插件和多分支管道

时间:2018-10-26 20:18:16

标签: jenkins jenkins-plugins jenkins-pipeline devops

我们有两种类型的项目,自由样式项目和多分支管道。我想拥有一个developer角色,以获取对作业的只读访问权限,以分析管道日志和存档的工件。对于自由风格的项目而言,效果很好,但是对于多分支机构,处于开发人员角色的用户什么也看不到,显示消息“此文件夹为空”,并且不会出现触发的构建。有人可以给个灯光吗?

具有以下配置的一些屏幕截图: Global roles Project roles

2 个答案:

答案 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->具有不同分支 前缀featbuginfra等。(例如: infra/PRJ-135-reciepts-issuesfeat/PRJ-337-new-customer等)

  • Product2-> Multibranch_pipeline_Product2->具有不同分支 前缀featbuginfra等。(例如: infra/PRJ-876-new-envfeat/PRJ-999-entity-creation等)

,您想将其分离给不同的用户:

  • Developer1-仅访问Project1和多分支中的分支 管道
  • Developer2-仅访问Project2及其内部的分支 多分支管道
  • Developer3-访问Project1和Project2 多分支管道

因此,在基于角色的插件中需要以下配置:

项目角色:

  • 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(.*)-将允许访问此多分支中所有带有前缀featbughotfixinfradevelop的所有分支项目。

与对Product2应该做的一样。

总而言之,您应该具有:  -Developer1具有角色Product1  -Developer2具有角色Product2  -Developer3兼有Product1和Product2

我测试了此解决方案,并且配置权限不相交(Developer1将无法访问Product2中的分支,而Developer2将无法访问Product1中的分支)