首页 > 解决方案 > VSTS 发布管道找不到已发布的工件

问题描述

我正在尝试设置 CI/CD,但运气不佳。我的目标是构建一个 .net web 项目槽VSTS并将其部署到AWS Beanstalk应用程序中。

到目前为止我在哪里?

创建vsts-ci.yml文件如下:

# ASP.NET
# Build and test ASP.NET web applications.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://docs.microsoft.com/vsts/pipelines/apps/aspnet/build-aspnet-4

pool:
  vmImage: 'VS2017-Win2016'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@0

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.artifactStagingDirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

我有一个如下的构建定义:

建造

有了这个,我的第一步build运行正确。顺便说一句,代理池是Hosted VS2017.

然后我创建了一个发布管道,如下所示:

发布管道

作为第 1 阶段的任务(在工件步骤之后运行的部分),我有以下内容:

释放

我已将构建挂钩到主分支提交,并将发布挂钩到成功构建,这些触发正常工作。虽然失败了。问题是由于路径输入错误而未找到工件文件引起的。但我不知道正确的版本。

构建完成后,它声称它创建了一个.zip包含已发布版本的文件:

构建成功

但在此之后,发布失败,只能说没有这样的文件。我在Web Deploy Archive现场尝试了许多路径,但没有一个可以找到 zip 文件。

发布失败

您看到的 powershell 任务,我创建它是为了检查路径,以及它们在其中的内容,而且它们大多是空的。

我想到的一件有趣的事情是,构建将文件放入其中,D:\a\1\a但发布任务会尝试D:\a\r1\a在我使用and为Web Deploy Archive字段添加后缀时进行调查。$(System.defaultWorkingDirectory)$(Build.artifactStagingDirectory)

另一个奇怪的事情是,在发布Download artifact阶段,它说Linked artifact count: 0。我希望是别的东西。

在此处输入图像描述

我在这里做错了什么?如果有人可以指导我,我将不胜感激。

更新:我添加了“发布工件:drop”

什么时候Path to publish是“$(System.DefaultWorkingDirectory)/project-2-codes.zip”

发布构建工件失败并出现错误:未找到 PathtoPublish: D:\a\r1\a\project-2-codes.zip

Path to publish“$(System.DefaultWorkingDirectory)”是什么时候

发布构建工件失败并出现错误:未找到 PathtoPublish:D:\a\r1\a\$(Build.ArtifactStagingDirectory)

标签: continuous-integrationazure-devopsazure-pipelinescontinuous-deploymentazure-pipelines-release-pipeline

解决方案


在多次撞墙之后,我发现了问题所在。

我创建的构建定义都错了。我使用了默认向导,没有注意到自定义设计器(我认为链接旁边的文本和链接名称没有任何意义)。

构建创建页面

它正在创建一个几乎空的构建定义。我什至不明白它在做什么。现在,使用visual designer我实际上可以选择一个包含所有必需构建任务的构建定义模板。正确创建构建后,一切正常。

这是我提出的构建定义:

建造

这是 beanstalk 部署任务:

部署


推荐阅读