Continuous integration VSTS发布管道找不到已发布的工件

Continuous integration VSTS发布管道找不到已发布的工件,continuous-integration,azure-devops,azure-pipelines,continuous-deployment,azure-pipelines-release-pipeline,Continuous Integration,Azure Devops,Azure Pipelines,Continuous Deployment,Azure Pipelines Release Pipeline,我正试图在运气不好的情况下设置CI/CD。我的目标是通过VSTS构建一个.net web项目,并将其部署到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.m

我正试图在运气不好的情况下设置CI/CD。我的目标是通过
VSTS
构建一个.net web项目,并将其部署到
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
运行正常。顺便说一句,代理池由VS2017托管

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

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

# 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)'

我已经将构建连接到一个主分支提交,并将发布连接到一个成功的构建,这些触发工作正常。尽管失败了。这个问题是由找不到工件文件引起的,可能是因为错误的路径输入。但我不知道正确的版本

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

但在此之后,发布失败,只是说没有这样的文件。我在
webdeployarchive
字段中尝试了许多路径,但没有一个能够找到zip文件

您看到的powershell任务,我创建它是为了检查路径,以及路径中包含的内容,它们大部分是空的

我认为一件有趣的事情是,build将文件放在
D:\a\1\a
中,但当我在
webdeployarchive
字段后面加上
$(System.defaultWorkingDirectory)
$(build.artifactstagindirectory)
时,发布任务会尝试查看
D:\a\r1\a

另一件奇怪的事情是,在发布
下载工件
阶段,它显示
链接工件计数:0
。我希望这是另外一回事

我做错了什么?如果有人能引导我,我将不胜感激

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

当发布路径为“$(System.DefaultWorkingDirectory)/project-2-codes.zip”时

发布生成项目失败,错误为:未找到路径发布:D:\a\r1\a\project-2-codes.zip

当发布路径为“$(System.DefaultWorkingDirectory)”时

发布生成项目失败,错误为:未找到路径发布:D:\a\r1\a\$(build.ArtifactStagingDirectory)


您需要将构建输出作为工件发布。使用发布工件任务。

在大量的头部撞击墙壁之后,我发现了问题所在

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

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

以下是我提出的构建定义:

下面是beanstalk部署任务:


尝试过之后,仍然显示“未找到路径发布”。请检查更新的问题。@TolgaEvcimen刚刚将发布路径设置为
$(build.artifactstagingdirectory)
,然后再试一次。在截图后,您确实向生成定义中添加了任务,对吗?您能描述一下您是如何配置构建任务或发布构建日志的吗?谢谢!我在同一个问题上挣扎了几天,无法理解到底发生了什么。你在“使用视觉设计师”中强调的内容引导我走上了正确的道路。因为我仍然想使用YAML模板,所以我照你说的做了,然后选择了“发布工件”,然后在右边所有字段的上方单击了链接“查看YAML”-它提供了修复原始YAML文件所需的代码片段。