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

时间:2017-02-15 10:29:43

标签: jenkins artifactory

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

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

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

Jenkins用户的有效权限:

  • 发布存储库
    • 删除/覆盖: false
    • 部署/缓存: true
    • 注释: true
    • 阅读: true
  • 分段
    • 删除/覆盖: true
    • 部署/缓存: true
    • 注释: true
    • 阅读: true

那么,有没有办法:

  1. 禁止部署(并重新部署)到发布存储库
  2. 允许每个版本的一个促销到发布存储库
  3. 禁止“重新促销”到发布存储库
  4. 允许部署(并重新部署)到临时存储库
  5. 最好只使用Artifactory权限设置。

1 个答案:

答案 0 :(得分:5)

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

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

    1. 允许每个版本一次促销到发布存储库
    2. [A2]不要让促销用户(参见A1)删除发布存储库的权限。因此,在尝试覆盖的情况下,您将收到错误消息:

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

      1. 禁止“重新促销”到发布存储库
      2. [A3]见A2

        1. 允许部署(并重新部署)到临时存储库
        2. [A4]授予Jenkins用户对登台存储库的删除权限。

          这应该使用Artifactory权限目标来实现。