将快照从 Bamboo 部署到 Artifactory 时遇到问题

Posted

技术标签:

【中文标题】将快照从 Bamboo 部署到 Artifactory 时遇到问题【英文标题】:Trouble deploying snapshot from Bamboo to Artifactory 【发布时间】:2012-06-12 14:22:12 【问题描述】:

我想将快照构建从 Bamboo 部署到 Artifactory。我的存储库的Handle Snapshots 选项被选中,它的Maven Snapshot Version Behavior 设置为Unique。仓库的布局是gradle-default

我的目标是制定一个构建计划,将工件部署在类似于以下位置的位置:

repo-local:com.company/project/1.0-SNAPSHOT/project-1.0-20120612.101600.txt

在 Bamboo 中,我有一个 Artifactory Generic Deploy Task,为 Edit Published Artifacts 字段配置了以下内容:

project-1.0-SNAPSHOT.txt=>com.company/project/1.0-SNAPSHOT

但是 Artifactory 拒绝了我的构建工件,说 The repository 'repo-local' rejected the artifact 'repo-local:com.company/project/1.0-SNAPSHOT/project-1.0-SNAPSHOT.txt' due to its snapshot/release handling policy.

如何让 Artifactory 接受工件并自动将 SNAPSHOT 替换为文件名中的时间戳

【问题讨论】:

【参考方案1】:

您的问题很可能是您部署到的路径不被您选择的布局视为有效的集成修订版(gradle-default)。 gradle-default 布局需要像这样的集成修订:

org/module/1.0-12345678912345/module-1.0-12345678912345.jar

即在基础修订后附加一个 14 位长的时间戳; 虽然您的路径包含 SNAPSHOT 而不是 14 位长时间戳。

如果你想要这样的模式:

com.company/project/1.0-SNAPSHOT/project-1.0-20120612.101600.txt

您必须自定义布局以接受 -SNAPSHOT 作为文件夹集成修订版,并修改您的工件以包含时间戳作为文件集成修订版。

我猜你的假设是 Artifactory 会将非唯一的集成版本转换为唯一的版本; Artifactory 仅在存储库设置为默认 Maven 布局且工件遵循 Maven 布局时执行此转换。

这是因为 Maven 实际上已经定义了集成修订的标准,而 Gradle 没有这样的标准;所以基本上,Gradle 修订版几乎可以是任何东西。

最重要的是,Gradle 世界中并不存在唯一和非唯一集成修订的概念,它实际上没有任何内置功能来支持这些功能;因此,当您在 Gradle 中看到 Mavenized 路径时,它基本上只是在模仿模式。

【讨论】:

以上是关于将快照从 Bamboo 部署到 Artifactory 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

将 Jar Artifact 从 Bamboo 部署到 Artifactory

如何配置从 BamBoo 到 CloudControl 的持续部署 [关闭]

Bamboo 部署 - 为每个部署项目添加新环境

Bamboo 部署项目到 Artifactory

从 Bamboo 中的单独 GIT 存储库中提取文件

从快照存储库下载 WAR 并使用 mvn 部署到本地 JBoss