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 文件

掉落

问题是当我使用 IIS 网站部署模板创建发布时,我只能 select 将放置文件夹中的一个 zip 文件部署到网站中。

在我的管道构建和发布任务中,我的 drop 是否有可能最终包含如下内容:

掉落

然后我的 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'