禁止重新部署以释放存储库

fil*_*phe 2 artifactory jenkins

CI系统: Jenkins使用Jenkins Artifactory插件,使用管道作业
语言: Java,使用Maven构建

我们有一个设置,其中"发布版本"应该上传到临时存储库,并且应该能够从连续的Jenkins构建中覆盖(例如,因为发布/ xxx分支中的错误修复).
不应允许将发行版本直接上载到发行版存储库中,但应允许将其升级到版本库中.当然,它们不应该被允许从促销或直接上传中被覆盖.

在我们目前的设置中,我们成功地允许重新部署到暂存,并禁止"重新促销"到发布.但是,发布工件仍然可以重新部署到发布存储库中.

Jenkins用户的有效权限:

  • 发布存储库
    • 删除/覆盖: false
    • 部署/缓存: true
    • 注释:是的
    • 阅读:真实
  • 分期
    • 删除/覆盖: true
    • 部署/缓存: true
    • 注释:是的
    • 阅读:真实

那么,有没有办法:

  1. 禁止将(并重新部署)部署到发布存储库
  2. 允许每个版本的一个促销到发布存储库
  3. 禁止"重新促销"到发布存储库
  4. 允许部署(并重新部署)到临时存储库

最好仅使用Artifactory权限设置.

小智 5

看来你走在了正确的轨道上.如您所述,您可以通过撤消"删除/覆盖"权限来"阻止"重新部署(覆盖).对于特定用户或您案例中的所有用户.要回答您的具体用例,您需要做的是:

  1. 禁止将(并重新部署)部署到发布存储库

[A1]创建用于促销的用户,该用户将具有对发布存储库的部署权限.除此用户外,没有其他用户应该具有该存储库的部署权限.它还应该具有对staging存储库的读取权限.请注意,管理员用户仍将拥有所有存储库的所有权限,但我相信这不会有任何问题.

  1. 允许每个版本的一个促销到发布存储库

[A2]不要让升级用户(参见A1)删除发布存储库的权限.因此,在尝试覆盖的情况下,您将收到一条错误消息:

"message":"没有足够的权限来覆盖工件'repoX:path/to/file'(用户'YYY'需要DELETE权限)."

  1. 禁止"重新促销"到发布存储库

[A3]见A2

  1. 允许部署(并重新部署)到临时存储库

[A4]授予Jenkins用户对登台存储库的删除权限.

这应该使用Artifactory权限目标来完成.