VSTS发布管道找不到发布的工件

时间:2018-09-02 19:08:40

标签: 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.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

有了这个,我的第一步build可以正确运行。 Btw代理程序池为Hosted VS2017

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

release pipeline

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

Release

我已经将构建挂接到master分支提交,并将发布挂接到成功构建,这些触发可以正常工作。虽然失败了。该问题是由于找不到路径文件而导致的找不到工件文件引起的。但是我不知道正确的版本。

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

build-success

但是在此之后,发布失败,只是说不出这样的文件。我在Web Deploy Archive字段中尝试了许多路径,但是没有一个可以找到该zip文件。

failed-release

您看到的powershell任务是我创建的,用于检查路径以及它们中包含的内容,并且它们大多是空的。

我想到的一件有趣的事是,构建将文件放在D:\a\1\a中,但是当我在D:\a\r1\a后缀Web Deploy Archive和{时,发布任务尝试查看$(System.defaultWorkingDirectory) {1}}。

另一个奇怪的是,在发布$(Build.artifactStagingDirectory)阶段,它表示Download artifact。我希望是其他东西。

enter image description here

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

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

Linked artifact count: 0为“ $(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)

2 个答案:

答案 0 :(得分:2)

很多头撞到墙上后,我发现了问题所在。

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

build creation page

它正在创建一个几乎为空的构建定义。我什至不知道它在做什么。现在,使用visual designer,我实际上可以选择一个包含所有必需的构建任务的建筑定义模板。正确创建了构建后,一切工作都很好。

这是我想出的构建定义:

build

这是beantalk部署任务:

deployment

答案 1 :(得分:0)

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