Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 不允许重新部署到发布存储库_Jenkins_Artifactory - Fatal编程技术网

Jenkins 不允许重新部署到发布存储库

Jenkins 不允许重新部署到发布存储库,jenkins,artifactory,Jenkins,Artifactory,CI系统:Jenkins与Jenkins人工插件,使用管道作业 语言:Java,用Maven构建 我们有一个设置,其中“发布版本”应该上载到一个暂存存储库,并且应该能够从连续的Jenkins构建中被覆盖(例如,由于发布/x.x.x分支中的错误修复)。 不应允许将发布版本直接上载到发布存储库中,但应允许将其升级到发布存储库中。当然,无论是升级还是直接上传,都不应该允许覆盖它们 在我们当前的设置中,我们成功地允许重新部署到暂存,并且不允许对发布进行“重新升级”。但是发布工件仍然可以重新部署到发布存储

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

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

在我们当前的设置中,我们成功地允许重新部署到暂存,并且不允许对发布进行“重新升级”。但是发布工件仍然可以重新部署到发布存储库中。

Jenkins用户的有效权限:

  • 发布存储库
    • 删除/覆盖:false
    • 部署/缓存:true
    • 注释:正确
    • 读:对
  • 登台
    • 删除/覆盖:true
    • 部署/缓存:true
    • 注释:正确
    • 读:对
那么,有没有办法:

  • 不允许部署(和重新部署)到发布存储库
  • 允许每个版本向发布存储库进行一次升级
  • 不允许对发布存储库进行“重新升级”
  • 允许部署(和重新部署)到临时存储库

  • 最好只使用Artifactory权限设置。

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

  • 不允许部署(和重新部署)到发布存储库
  • [A1]创建一个升级用户,该用户将具有发布存储库的部署权限。除此用户外,任何其他用户都不应具有该存储库的部署权限。它还应该对临时存储库具有读取权限。请注意,管理员用户仍然拥有对所有存储库的所有权限,但我相信这不应该有任何问题

  • 允许每个版本向发布存储库进行一次升级
  • [A2]不要授予升级用户(参见A1)在发布存储库上的删除权限。因此,在尝试覆盖的情况下,您将收到一条错误消息:

    “消息”:“权限不足,无法覆盖工件‘repoX:path/to/file’(用户‘YYY’需要删除权限)。”

  • 不允许对发布存储库进行“重新升级”
  • [A3]见A2

  • 允许部署(和重新部署)到临时存储库
  • [A4]授予Jenkins用户对暂存存储库的删除权限


    使用Artifactory权限目标应该可以做到这一点。

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