禁止重新部署以发布存储库

Disallow re-deploy to release repository

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

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

在我们当前的设置中,我们已成功允许重新部署到暂存区,并禁止 "re-promotions" 到发布。但是 发布工件仍然可以重新部署到发布存储库中。

Jenkins 用户的有效权限:

那么,有没有办法:

  1. 禁止部署(和重新部署)到发布存储库
  2. 允许每个版本一次 升级到发布存储库
  3. 不允许 "re-promotions" 发布存储库
  4. 允许部署(和重新部署)到登台存储库

最好只使用 Artifactory 权限设置。

看来你的方向是正确的。正如您提到的,您可以通过撤销 "delete / overwrite" 权限来 "block" re-deploy(覆盖)。对于特定用户,或您案例中的所有用户。要回答您的具体 use-case,您需要做的是:

  1. 不允许部署(和 re-deploys)到发布存储库

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

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

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

"message" : "Not enough permissions to overwrite artifact 'repoX:path/to/file' (user 'YYY' needs DELETE permission)."

  1. 不允许 "re-promotions" 发布存储库

[A3]见A2

  1. 允许部署(和 re-deploys)到登台存储库

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

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