首页 文章

将快照工件发布到azure devops工件

提问于
浏览
7

我在Azure DevOps中设置了Gradle构建,它编译Azure DevOps git存储库中的代码,然后将生成的JAR(作为Maven工件)发布到Azure工件,如here所述 . 然后,其他Azure DevOps git存储库中的代码可以将这些组件作为依赖项引用 . 这对于这些组件的正式版本(具有唯一的版本号)来说很好,但我还需要一种方法来使这个版本适用于正在进行的快照版本 . 问题是我不能多次发布具有相同版本号(例如1.2.3-SNAPSHOT)的工件 . 这似乎是因为packages in Azure are immutable .

根据我的理解,这意味着Azure Artifacts不能用于存储正在进行的快照工件 . 那是对的吗?

如果是,是否有任何替代方案仍然使用Azure DevOps?我可以看到我可以publish artifacts to Azure Blob Storage,但可能这是你必须在Azure Artifacts的现有使用之上付出的代价 . 我还可以看到有一些GitHub Maven plugins用于将GitHub仓库视为Maven仓库,但我找不到任何类似的使用Azure DevOps仓库作为发布Maven工件的地方 .

如果它有所作为,我说的是基于 Cloud 的Azure的东西,没有任何内部部署 .

1 回答

  • 0

    包管理的前提是包是不可变的 . 这使得一大堆缓存选项无法存在 . 包存储在本地包缓存中,可能存储在代理订阅源包缓存中,并且所有这些元素都假定具有相同名称版本的包未更改,并且将提供缓存版本而不是您推送的最新版本 . 大多数包装系统都是 Build 在这个前提下的,包括Nuget和NPM .

    创建开发快照的技巧是使用语义版本控制并为您的版本添加唯一的后缀 . 例如 1.2.3-SNAPSHOT.1 后跟 1.2.3-SNAPSHOT.2 ,有一些可用于Azure管道的工具,如GitVersion,它们可以自动生成一个唯一的版本后缀,您可以将其传递到工件的版本中 .

    如果您不想“搞砸”您的主要包裹Feed,您可以设置第二个用于开发目的的Feed,其中包含您的所有中间包,然后您可以将其中一个包推广到主要Feed,或者您可以运行特定管道(配置)将最终包推送到用于稳定包的订阅源 .

相关问题