从VSTS发布管理部署网站构建到Azure

28

我正在尝试使用 Visual Studio Team Services 的新版发布管理系统。我的场景是一个经典的网站(ASP.NET 4.5),使用 Git 存储库托管在 VSTS 上。构建定义成功如下所示:

enter image description here

构建设置为发布为可以被 Release Manager 拾取的 artifact,如下所示:

enter image description here

在 Release Manager 中,我已正确连接了该 artifact,如下所示:

enter image description here

这里您可以看到我的环境以及相关任务(全部都是克隆)

enter image description here

当我运行发布时,构建成功发布,它连接到我的订阅,但当它尝试查找包文件时,输出日志的第101行报以下错误:

"No files were found to deploy with the search pattern 'C:\a\4fe43dd1a***.zip'"

以下是完整输出:

enter image description here

到这里我就卡住了,因为我认为我的 VSTS artifact 链接应该为我解析此路径。显然我在某个重要的地方漏掉了一个重要的部分,但我尽可能地遵循了可用的文档。

如果有人有解决方案或可以指引我走向正确的方向,那将不胜感激!

--- 编辑 ---

我使用文件选择器来选择一个Web部署包(如下图所示)。我尝试了根网站和bin文件夹。但两次尝试都导致错误:“未找到任何要使用的文件,搜索模式为'C:\a\4fe43dd1a\Classic Website Definition\drop\ClassicWebsite\bin'”。

输入图像描述

--- 编辑 2 ---

我在我的BUILD过程中添加了一个MSBuild任务,并使用以下MSBuildArguments:

/p:OutDir=$(build.stagingDirectory) /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true

并且在我的Copy/Publish Artifacts任务中,我仅限制输出复制.zip文件。现在,在我的RELEASE过程中,当我浏览以查找“Web Deploy Package”时,“drop”文件夹是空的。这是一张截图:

输入图像描述

我认为我走在正确的道路上,只需要帮助调整我的BUILD任务以生成适用于我的RELEASE过程使用的正确产品。感谢任何帮助。

2个回答

23

部署包没有被复制到工件文件夹中。这就是为什么发布管理不能找到该包的原因。将 "复制并发布生成的工件" 设置为以下内容应该可以解决您的问题: VSTS复制并发布工件步骤


我相信自2016年1月5日以来,与“发布构建工件”任务相关的问题已经解决了。 - Joshua Drake
我也遇到了同样的问题,发布构建工件已经按照上述设置,除了现在没有内容窗格。但是在发布时仍然出现错误,无法正常工作。 - James Hancock
@JamesHancock,“内容”窗格在“发布构建工件”任务中不可用。您需要添加一个“复制并发布构建工件”的步骤。 - Eddie Chen - MSFT
@JamesHancock 我刚刚尝试了一下 "发布构建工件" 任务,即使没有指定 "***.zip",包也可以成功发布到工件中。你能否提出一个新的问题,并在你的构建定义中添加设置的截图? - Eddie Chen - MSFT
@MichaelO'Neill 这个选项已经被弃用了。现在你必须同时使用“复制文件”和“发布工件”任务。 - blizz
显示剩余5条评论

5
$(System.DefaultWorkingDirectory)更改为$(Agent.ReleaseDirectory)。工件将被放置在该文件夹中。我不确定$(System.DefaultWorkingDirectory)映射到什么,但我的印象是它是代理用于您的发布的文件夹之外的某些内容。
此外,请确保发布的工件包含预期的zip文件--如果未创建部署包,或者未发布包含包的输出文件夹,显然您将无法稍后发布它。
构建Web应用程序时,请确保使用MSBuild参数打包它以进行部署。类似这样的东西应该可以工作:/p:OutDir=$(build.stagingDirectory) /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true

谢谢Daniel。我进行了更改,两种情况下路径都解析为:“C:\ a \ 4fe43dd1a \” - 然后我使用文本框旁边的文件选择器,并能够在由我的构建过程创建的“drop”文件夹中导航到我的项目。我想我只需要指向正确的路径,但我不确定是哪个。我尝试将其指向“ $(System.DefaultWorkingDirectory)\ Classic Website Definition \ drop \ ClassicWebsite”以及“ $(System.DefaultWorkingDirectory)\ Classic Website Definition \ drop \ ClassicWebsite \ bin”,但在这两种情况下,我都得到“未找到要部署的文件”,但项目文件确实存在... - INNVTV
不是,但如果您查看我的更新屏幕截图,发行版将不再寻找zip文件。 zip是必需的格式吗?如果是这样,我该如何使其成为我的构建/产物的一部分?如果zip不是必需的格式,那么我生成适当的产物供RM使用的选项是什么? - INNVTV
我的 MSBuild 参数如下:/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"。 - INNVTV
1
谢谢Daniel。我添加了额外的/p:OutDir=$(build.stagingDirectory),就像你在回答中提到的那样,结果相同。当我浏览我的Web部署包时,来自我的工件/放置的可用选项与我的代码存储库完全相同(请参见我帖子中的最后一张图片)。我没有看到任何部署包。尽管我有一个良好的构建,并将其链接为工件。 - INNVTV
我通过将“复制和发布”任务的“复制根目录”更改为$(Build.StagingDirectory)(与MSBuild参数相同的值)来解决了我的问题。 - ds19
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接