【问题标题】:Disallow re-deploy to release repository不允许重新部署以发布存储库
【发布时间】:2017-02-15 10:29:42
【问题描述】:

CI 系统: Jenkins 和 Jenkins Artifactory 插件,使用流水线作业
语言: Java,使用 Maven 构建

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

在我们当前的设置中,我们已经成功地允许重新部署到暂存,并且不允许“重新提升”到发布。但仍可以将发布工件重新部署到发布存储库中。

Jenkins 用户的有效权限:

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

那么,有没有办法:

  1. 不允许部署(和重新部署)到发布存储库
  2. 允许每个版本一个升级到发布存储库
  3. 禁止“重新升级”到发布存储库
  4. 允许部署(和重新部署)到临时存储库

最好只使用 Artifactory 权限设置。

【问题讨论】:

  • 您知道从 Maven 的角度覆盖,即重新部署,具有不同内容的“发布版本”(具有相同的发布版本号)违反了 Maven 的理念,是吗?这就是快照版本的用途。即使它对您来说只是一个临时存储库。 Maven 对暂存存储库一无所知。它只知道快照和版本。

标签: jenkins artifactory


【解决方案1】:

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

  1. 不允许部署(和重新部署)到发布存储库

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

  1. 允许每个版本升级到发布存储库

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

"message" : "权限不足,无法覆盖工件 'repoX:path/to/file'(用户 'YYY' 需要 DELETE 权限)。"

  1. 禁止“重新升级”到发布存储库

[A3] 见 A2

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

[A4] 授予 Jenkins 用户对暂存存储库的删除权限。

使用 Artifactory 权限目标应该可以解决问题。

【讨论】:

    猜你喜欢
    • 2013-04-26
    • 1970-01-01
    • 2022-01-07
    • 2012-10-21
    • 2013-01-29
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多