Azure DevOps:将 Maven 工件从 Azure 工件导入发布时出错

Posted

技术标签:

【中文标题】Azure DevOps:将 Maven 工件从 Azure 工件导入发布时出错【英文标题】:Azure DevOps: Error importing Maven artifact from Azure Artifacts into Release 【发布时间】:2019-01-19 17:14:26 【问题描述】:

因此,我尝试使用 Azure DevOps 堆栈和我通常使用 Jenkins 构建并使用 Heroku 托管的项目 Java Maven 项目来进行概念验证。最初我试图直接从构建管道 WAR 文件设置发布管道,但由于找不到它,我对自己说“好吧,如果你发布到工件,它应该是直截了当的”所以我做到了。

Build 正在将 maven 工件发布到 Azure Artifacts

就我而言,这里没有问题。我没有弄乱权限,但我确实注意到在提要设置下,我无法选择(它是灰色的)“允许构建和发布”。但是Project Collection Build Services被设置为贡献者。

在版本中配置工件

所以这是第一个潜在问题。提要显示在下拉列表中,但工件没有。提要上只有一个工件,所以我觉得这很奇怪:

所以我被要求手动输入,这就是事情开始变得棘手的地方。对我来说,工件的 id 应该是 maven 坐标com.acme.demo:reading-time-app。如果我输入,我可以继续,但没有确认是正确的 ID:

创建和触发发布

所以当我创建一个新版本时,它会询问我的版本号,但下拉菜单再次没有出现。所以我写的是 1.1 版本,你可以从第一个屏幕截图中确认它存在:

我触发了发布,在Download Artifact 阶段出现以下错误:

2019-01-19T17:11:46.7642756Z ##[section]Starting: Download artifact - _com.acme.demoreading-time-app (Azure Artifacts)
2019-01-19T17:11:46.7895376Z ==============================================================================
2019-01-19T17:11:46.7895486Z Task         : Download Package
2019-01-19T17:11:46.7895573Z Description  : Download a package from a Package Management feed in Azure Artifacts or TFS. 
 Requires the Package Management extension.
2019-01-19T17:11:46.7895642Z Version      : 0.1.17
2019-01-19T17:11:46.7895704Z Author       : ms-vscs-rm
2019-01-19T17:11:46.7895757Z Help         : Needs Package Management extension to be installed
2019-01-19T17:11:46.7895859Z ==============================================================================
2019-01-19T17:11:48.2563329Z SYSTEMVSSCONNECTION exists true
2019-01-19T17:11:48.2619024Z ##[error]Failed to get package metadata with error Error: Invalid Resource
2019-01-19T17:11:48.9982590Z ##[section]Finishing: Download artifact - _com.acme.demoreading-time-app (Azure Artifacts)

我在这里疯了。我认为这应该非常简单,但我什至还没有到调试部署到 Azure 应用服务的任何问题的阶段。任何帮助都深表感谢。

提前谢谢你!

【问题讨论】:

将 id 设置为工件名称也会出错,以防万一。 【参考方案1】:

对于此处的混淆,抱歉 - 目前,“Azure Artifacts”工件类型仅支持 NuGet 包。我们应该在当前部署中更改字符串,使其更清晰。我们还在努力扩展它以支持所有其他类型(Maven、npm、Python 和 Universal);应该会在 2 月底左右推出。

【讨论】:

谢谢@AlexMullians。当您在这里时,我只是去了工件,因为我无法直接从 maven 构建中添加工件。它不会在路径中找到 WAR。有什么方法可以查看文件系统的状态以尝试了解为什么找不到包? 您可以从任何具有文件选择器的步骤中浏览最后构建的输出。听起来您的构建可能没有 Publish Build Artifacts 步骤,或者如果有,您可能缺少前面的 Copy Files 步骤,该步骤将您的 WAR 文件从构建的任何位置带到您选择在发布...步骤。

以上是关于Azure DevOps:将 Maven 工件从 Azure 工件导入发布时出错的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps 项目管道无法从不同项目中的工件源访问 NuGet 包

将构建工件发布到远程 Git 存储库 - Azure DevOps

如何使用 Azure Devops CLI 下载构建工件?

Azure DevOps(内部部署) - Minimatch模式下载工件的多个部分

Azure Devops角环境变量

您如何使用Azure Devops CLI下载构建工件?