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

标签 jenkins jenkins-plugins jenkins-pipeline devops

我们有两种类型的项目,一种是自由式,一种是多分支流水线。我想拥有一个 developer 角色来获得对作业的只读访问权限,以分析管道日志和存档的工件。对于自由式项目,效果很好,但对于多分支,开发人员角色中的用户看不到任何东西,会出现消息“此文件夹为空”,并且不会出现触发构建。有人可以点灯吗?

配置的一些屏幕截图: Global roles Project roles

最佳答案

我有同样的问题,没有找到完美的解决方案,但它是有效的。

一个要求: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 和 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(.*) - 将允许访问前缀为 featbughotfixinfra 的所有分支develop 在此多分支项目中。

您应该为 Product2 做同样的事情。

总而言之,你应该: - Developer1 具有角色 Product1 - Developer2 具有角色 Product2 - Developer3 有两个角色,Product1 和 Product2

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

关于Jenkins 角色策略插件和多分支管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53015798/

相关文章:

jenkins - 当Gradle步骤失败时通过Jenkins构建

java - Jenkins 插件中的变量替换

groovy - 带有值列表的Groovy Switch语句

jenkins - 尝试在 Jenkins 镜像中安装 Ansible 时出错

Jenkins HttpRequest 插件 MissingMethodException

deployment - Jenkins - 如何使用 shell 脚本创建列表字段参数

java - jenkins 插件 - 从插件内部启动和停止阶段

jenkins - <jenkins> 管道触发器中的时区

python - Docker构建ubuntu :xenial issue

Jenkins 代理安全