优化Azure DevOps中的发布文件夹结构

65次阅读
没有评论

问题描述

在Azure DevOps中使用CI/CD设置部署ASP.NET Core 3.0应用程序,但在发布后的文件夹结构中包含了许多不必要的目录。用户希望优化文件夹结构,使其更加简洁。

解决方案

以下方案基于用户提供的问题描述和最佳回答,可能需要根据实际情况进行调整。

使用dotnet build和dotnet publish

根据用户提供的信息,您正在开发一个ASP.NET Core 3.0应用程序,并且计划在Ubuntu 18.04服务器上托管它。针对这种情况,我们建议您使用dotnet builddotnet publish来构建和发布应用程序,以获得更简洁的文件夹结构。

以下是您可以采取的步骤:

  1. 首先,确保您的Azure DevOps代理在Ubuntu上运行。这对于将来托管在Ubuntu服务器上的应用程序非常重要。

  2. 在构建管道中,使用DotNetCoreCLI@2任务代替VSBuild@1任务,因为VSBuild@1任务仅适用于Windows代理,而您的目标是在Ubuntu上构建应用程序。在DotNetCoreCLI@2任务中,使用dotnet build命令代替。

  3. 使用dotnet publish命令将应用程序发布到指定的文件夹。这将产生一个更干净的文件夹结构,只包含您的应用程序所需的内容。

以下是修改后的示例构建管道:

jobs:
- job: Build
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - task: DotNetCoreCLI@2
    inputs:
      command: 'build'
      projects: '**/*.csproj'
      arguments: '--configuration $(BuildConfiguration)'

  - task: DotNetCoreCLI@2
    inputs:
      command: 'publish'
      publishWebProjects: true
      arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/publish/'

- job: Deploy
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)/publish'
      ArtifactName: 'drop'
      publishLocation: 'Container'

优化发布文件夹结构

如果您仍然想要进一步优化发布文件夹结构,可以使用脚本来进行操作。您之前提到的bash脚本是一个很好的开始,但我们可以做一些改进,使其更加通用。

以下是一个优化的bash脚本示例,用于创建符号链接来生成更简洁的文件夹结构:

#!/bin/bash
# 构建和发布应用程序
dotnet build --configuration $(BuildConfiguration)
dotnet publish --configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/publish/

# 设置符号链接
artifactDir=$(Build.ArtifactStagingDirectory)/publish
targetDir=$artifactDir/MyProject.$(build.BuildNumber).$(Build.BuildId)
releaseDir=$targetDir/Release/netcoreapp3.0

# 删除目标文件夹(如果存在)
if [ -d "$releaseDir" ]; then
  rm -rf "$releaseDir"
fi

# 创建符号链接
ln -s $artifactDir $targetDir
ln -s $targetDir/Content/d_C/a/1/s/MyProject/obj/Release/netcoreapp3.0/PubTmp/Out $releaseDir

在这个脚本中,我们首先使用dotnet builddotnet publish来构建和发布应用程序。然后,我们设置了符号链接,以便您可以访问所需的内容,同时避免了不必要的文件夹嵌套。

请注意,这只是一个示例脚本,您可能需要根据实际情况进行调整和优化。

结论

通过采用dotnet builddotnet publish,以及优化的脚本,您可以实现一个更加简洁和清晰的发布文件夹结构,以提高应用程序的可维护性和可读性。

请根据实际情况和需求进行操作,并确保在进行任何更改之前备份您的数据和设置。

参考链接:
DotNetCoreCLI@2任务文档
dotnet publish文档
示例构建管道

正文完