在 Artifactory 中阻止覆盖 NuGet 工件

Posted

技术标签:

【中文标题】在 Artifactory 中阻止覆盖 NuGet 工件【英文标题】:Block overwriting NuGet artifacts in Artifactory 【发布时间】:2017-04-13 18:30:05 【问题描述】:

此问题涉及 Artifactory Pro 4.14.2 中的本地 NuGet 存储库。

我们使用名为 DevNetRunnerSvc 的服务帐户将 NuGet 工件发布到 Artifactory。此帐户配置了Deploy/Cache 权限,未配置Delete/Overwrite 权限

但是,DevNetRunnerSvc 仍然能够覆盖此存储库中的工件:

我需要一些帮助来保护工件免受任何和所有覆盖(适用于已发布的 NuGet 包),或者确定这是一个应该转发给 JFrog 的错误。

附加信息:

用于发布工件的(经过轻微清理的)命令是 jfrog rt upload $(Join-Path $env:CI_PROJECT_DIR "$($env:PACKAGE).$($env:VERSION).nupkg") nuget-org-dev/org/$($env:PACKAGE)/$($env:PACKAGE).$($env:VERSION)-$($env:CI_BUILD_REF_SLUG).nupkg 在调试此问题时,我已从所有组中删除了 DevNetRunnerSvc。 成功地从 DevNetRunnerSvc 中删除 Deploy/Cache 权限会阻止其将工件发布到此存储库。

将已发布的工件从该存储库“提升”到另一个 已得到适当阻止:

[Info] Moving artifact: nuget-org-dev/org/org.Infra.Pipeline/org.Infra.Pipeline.0.2.2-master.nupkg to: nuget-org/org/org.Infra.Pipeline/org.Infra.Pipeline.0.2.2.nupkg [Error] Artifactory response: 409 Conflict "messages": [ "level": "ERROR", "message": "User doesn't have permissions to move 'nuget-org-dev:org/org.Infra.Pipeline/org.Infra.Pipeline.0.2.2-master.nupkg'. Needs delete permissions." ]

上面用来执行的命令是jfrog rt move "nuget-org-dev/(org)/($($env:PACKAGE))/($($env:PACKAGE).$($env:VERSION))-$($env:CI_BUILD_REF_SLUG)(.nupkg)" "nuget-org/1/2/34"

我已将自己添加为此存储库的观察者。当DevNetRunnerSvc 覆盖工件时,我收到以下事件通知:Thu Apr 13 12:25:34 EDT 2017 [devnetrunnersvc/10.228.128.23] [CREATED] nuget-org-dev/org/org.Infra.Pipeline/org.Infra.Pipeline.0.2.2-master.nupkg

【问题讨论】:

我不确定我是否遗漏了什么,但只是为了确保,当您删除“删除/覆盖”权限时,您无法覆盖工件?如果是这种情况,我不确定这里有什么问题?这似乎是一种完全正常的行为 当我删除删除/覆盖权限时,我仍然能够覆盖工件。至少可以说这不是预期的行为!如您所料,删除工件被阻止。有没有办法让问题更清楚?随意编辑! 【参考方案1】:

看起来这是此 Jira RTFACT-14442 中提到的错误,该错误已在更高版本中修复。此外,Artifactory 版本 4.14.2 已满足其end of life 要求,JFrog 不会为该版本处理任何错误。我强烈建议将 Artifactory 升级到 6.23 或 7.10 的最新版本。

【讨论】:

以上是关于在 Artifactory 中阻止覆盖 NuGet 工件的主要内容,如果未能解决你的问题,请参考以下文章

Artifactory - NuGet - Max Unique Snapshots

覆盖Artifactory工件(和历史)?

artifactory gradle 插件覆盖快照版本

如何在将通用工件上传到jenkins管道中的JFrog Artifactory时重命名现有文件夹

您如何覆盖传递的 nuget 依赖项

如何阻止记录在关闭时被覆盖