Devops 管道和发布:将一个解决方案与多个项目一起部署为一个 zip file/package
Devops Pipelines and Releases: Deploying One solution with multiple projects as one zip file/package
想了解您对如何执行此操作的意见。我们有一个包含多个项目的解决方案。该解决方案只需要部署在一个网站中。目前,当我构建管道时,放置文件夹包含多个 zip 文件,每个项目一个。
这是构建任务的 YAML
- task: VSBuild@1
displayName: 'Build MySolution'
inputs:
solution: '$/MyRepo/Main/MySolution/Mysolution.sln'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\"'
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
这是发布任务的 YAML
steps:
- task: PublishBuildArtifacts@1
displayName: 'Publish ChilliDB'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
condition: succeededOrFailed()
当我查看我的放置文件夹时,我可以看到以下 zip 文件
掉落
- 项目1.zip
- 项目2.zip
- 项目3.zip
问题是当我使用 IIS 网站部署模板创建发布时,我只能 select 将放置文件夹中的一个 zip 文件部署到网站中。
在我的管道构建和发布任务中,我的 drop 是否有可能最终包含如下内容:
掉落
- 我的solution.zip
然后我的 solution.zip 将包含每个项目文件的文件夹。
或者我可以在我的发布管道上做一些事情,我可以将多个项目 zip 文件部署到一个网站中。
您可以尝试在发布 drop 之前提取 project.zip 文件。检查以下示例:
steps:
- task: VSBuild@1
inputs:
solution: '**\*.sln'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\1"'
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '$(build.artifactstagingdirectory)/1/WebApplication1.zip'
destinationFolder: '$(build.artifactstagingdirectory)/2/WebApplication1'
cleanDestinationFolder: true
overwriteExistingFiles: false
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '$(build.artifactstagingdirectory)/1/WebApplication2.zip'
destinationFolder: '$(build.artifactstagingdirectory)/2/WebApplication2'
cleanDestinationFolder: true
overwriteExistingFiles: false
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/2'
ArtifactName: 'drop'
publishLocation: 'Container'
想了解您对如何执行此操作的意见。我们有一个包含多个项目的解决方案。该解决方案只需要部署在一个网站中。目前,当我构建管道时,放置文件夹包含多个 zip 文件,每个项目一个。
这是构建任务的 YAML
- task: VSBuild@1
displayName: 'Build MySolution'
inputs:
solution: '$/MyRepo/Main/MySolution/Mysolution.sln'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\"'
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
这是发布任务的 YAML
steps:
- task: PublishBuildArtifacts@1
displayName: 'Publish ChilliDB'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
condition: succeededOrFailed()
当我查看我的放置文件夹时,我可以看到以下 zip 文件
掉落
- 项目1.zip
- 项目2.zip
- 项目3.zip
问题是当我使用 IIS 网站部署模板创建发布时,我只能 select 将放置文件夹中的一个 zip 文件部署到网站中。
在我的管道构建和发布任务中,我的 drop 是否有可能最终包含如下内容:
掉落
- 我的solution.zip
然后我的 solution.zip 将包含每个项目文件的文件夹。
或者我可以在我的发布管道上做一些事情,我可以将多个项目 zip 文件部署到一个网站中。
您可以尝试在发布 drop 之前提取 project.zip 文件。检查以下示例:
steps:
- task: VSBuild@1
inputs:
solution: '**\*.sln'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\1"'
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '$(build.artifactstagingdirectory)/1/WebApplication1.zip'
destinationFolder: '$(build.artifactstagingdirectory)/2/WebApplication1'
cleanDestinationFolder: true
overwriteExistingFiles: false
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '$(build.artifactstagingdirectory)/1/WebApplication2.zip'
destinationFolder: '$(build.artifactstagingdirectory)/2/WebApplication2'
cleanDestinationFolder: true
overwriteExistingFiles: false
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/2'
ArtifactName: 'drop'
publishLocation: 'Container'