如何解决如何在Azure开发管道中构建单个项目工件
我的仓库中包含多个项目,我想构建单个zip工件以分别部署它们。当前,管道正在构建一个包含所有项目的zip工件。如何配置azure-pipelines.yml文件来完成此任务?下面是我当前的文件。
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- 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:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip"
/p:DeployIisAppPath="Default Web Site"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
解决方法
您可以更改构建参数/p:PackageAsSingleFile=false
,这将防止将所有项目压缩在一起。如果要在构建后移动构建的文件,请在“发布工件”步骤之前,创建“复制文件”任务,该任务会将项目的构建文件夹复制到文件夹中的其他位置。
'$(Build.ArtifactStagingDirectory)'
步骤:
- 任务:CopyFiles @ 2 displayName:“复制项目文件” 输入: SourceFolder:'$ \ ProjectName \ bin $(BuildConfiguration)' 内容:“ ****” TargetFolder:'$(build.artifactstagingdirectory)\ ProjectName' CleanTargetFolder:true
尽管这些仍将放置在“放置”文件夹中或调用$(build.artifactstagingdirectory)的任何位置。分离工件的唯一方法是为每个项目创建单独的管道。
,这取决于您如何定义MSBuild参数。 /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"
是导致此问题的直接原因,它调用msbuild将所有项目打包到一个WebApp.zip
文件中。
使用msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
,您可以在ProjectName.zip
路径下拥有单独的$(build.artifactStagingDirectory)
文件。
然后您可以使用一个Publish Build Artifact task
来发布整个$(build.artifactStagingDirectory)
目录,其中包含ProjectA.zip
,ProjectB.zip
...
此外,您可以在一个管道中将多个Publish Build Artifact tasks
用于多个输出xx.zip
文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。