Continuous integration VSTS发布管道找不到已发布的工件
我正试图在运气不好的情况下设置CI/CD。我的目标是通过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
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文件所需的代码片段。