artifactorycloud-如何在不破坏模块中的repo路径的情况下复制工件

artifactorycloud-如何在不破坏模块中的repo路径的情况下复制工件,artifactory,Artifactory,我的构建管道正在将一个多模块Maven项目上载到Artifactory存储库repo1。在管道的最末端(对于某些条件),有一个步骤将把一个工件从repo1复制到repo2。我正在使用RESTAPI:$(ARTIFACTORY\uURL)/API/copy/repo1/org/sonarsource/sonarlint/eclipse/org.sonarlint.eclipse.site/{version}/org.sonarlint.eclipse.site-{version}.zip?to=/

我的构建管道正在将一个多模块Maven项目上载到Artifactory存储库
repo1
。在管道的最末端(对于某些条件),有一个步骤将把一个工件从
repo1
复制到
repo2
。我正在使用RESTAPI:
$(ARTIFACTORY\uURL)/API/copy/repo1/org/sonarsource/sonarlint/eclipse/org.sonarlint.eclipse.site/{version}/org.sonarlint.eclipse.site-{version}.zip?to=/repo2/org.sonarlint.eclipse.site latest.zip&suppressLayouts=1
这很好,但是我注意到,在构建细节中查看构建发布的模块时,工件前面的repo路径现在指向
repo2/org.sonalint.eclipse.site latest.zip
。当浏览repo1树时,我可以看到
org.sonalint.eclipse.site-{version}.zip
仍然存在

然后我尝试推广这个构建,但失败了。zip不会升级到最终存储库。我在日志中发现:

2020-06-12 07:56:10,266 [http-nio-8082-exec-3579] [WARN ] (o.a.a.l.t.PathTranslationHelper:68) - Unable to translate path 'org.sonarlint.eclipse.site-latest.zip': does not represent a valid module path within the source.
2020-06-12 07:56:10,895 [http-nio-8082-exec-3579] [INFO ] (o.a.b.BuildPromotionHelper:214) - Skipping promotion status update: item promotion was completed with errors and warnings.

问题:复制操作不应该保留复制工件的repo路径吗?为什么要指向新副本?或者至少,promote操作是否应该足够聪明来处理这个问题?

在JFrog支持的帮助下,我们成功地解决了这个问题。在使用promote REST API时,我们必须指定
sourceRepo
参数

长话短说: 正如您在本文中看到的,一旦触发了构建提升,Artifactory将首先搜索它应该提升的工件列表。它将根据Build info JSON中的SHA1值以及Build.name和Build.number属性进行搜索。
由于复制的工件具有相同的SHA1(它们基本上是符号链接),升级将从存在拷贝的两个repo中的任意一个随机获取工件。在构建升级步骤中指定<代码>源代码> <代码>参数将迫使它只考虑这个回购,并且在我的情况下解决了这个问题。

< P>借助JFACK支持,我们设法摆脱了这个问题。在使用promote REST API时,我们必须指定
sourceRepo
参数

长话短说: 正如您在本文中看到的,一旦触发了构建提升,Artifactory将首先搜索它应该提升的工件列表。它将根据Build info JSON中的SHA1值以及Build.name和Build.number属性进行搜索。 由于复制的工件具有相同的SHA1(它们基本上是符号链接),升级将从存在拷贝的两个repo中的任意一个随机获取工件。在构建升级步骤中指定<代码>源代码> <代码>参数将迫使它只考虑此回购,并且在我的情况下,解决了这个问题。