问题描述
在使用Azure DevOps进行构建和发布过程时,希望了解在这些过程背后到底发生了什么。用户已经成功创建了一个构建流水线,并成功发布了一个Azure App Service,但是对于这些过程的具体细节感到困惑。
解决方案
构建流水线配置
用户的构建流水线的配置如下所示:
trigger:
- master
pool:
vmImage: 'Ubuntu-16.04'
variables:
buildConfiguration: 'Release'
steps:
- script: dotnet restore
displayName: Restoring Dependencies
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'
- task: DotNetCoreCLI@2
displayName: Unit Tests
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration)'
- task: DotNetCoreCLI@2
displayName: Publishing
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
- task: PublishBuildArtifacts@1
发布流水线配置
用户的发布流水线配置如下所示:
steps:
- task: AzureRmWebAppDeployment@4
displayName: 'Deploy Azure App Service'
inputs:
azureSubscription: '$(Parameters.ConnectedServiceName)'
appType: '$(Parameters.WebAppKind)'
WebAppName: '$(Parameters.WebAppName)'
构建流程解析
用户的构建流水线在执行过程中,会依次执行以下步骤:
-
恢复依赖项 (
dotnet restore
):该步骤会恢复项目的依赖项,以确保构建过程所需的包和库得以加载。 -
构建 (
dotnet build
): 该步骤会执行项目的构建,生成编译后的二进制文件。在这个特定的流水线配置中,使用了dotnet build
命令,并根据指定的配置($(buildConfiguration)
)进行构建。 -
单元测试 (
DotNetCoreCLI@2
): 该步骤使用DotNetCoreCLI
任务来执行单元测试。它通过test
命令运行项目中的单元测试,并指定了测试项目的路径和配置。 -
发布 (
DotNetCoreCLI@2
): 这一步骤执行项目的发布操作。使用publish
命令将应用程序发布到指定的输出目录($(Build.ArtifactStagingDirectory)
)。publishWebProjects: True
表示发布Web项目,zipAfterPublish: True
表示在发布后将其打包为zip文件,以便后续使用。 -
构建发布文件 (
PublishBuildArtifacts@1
): 最后一步是使用PublishBuildArtifacts
任务将构建生成的发布文件(在前一步中生成的文件)发布到Azure DevOps的构建工件存储区(Artifacts)中,以便在后续的流程中使用。
发布流程解析
用户的发布流水线负责将构建生成的文件部署到Azure App Service。具体步骤如下:
- 部署 Azure App Service (
AzureRmWebAppDeployment@4
): 这一步使用AzureRmWebAppDeployment
任务来将构建生成的文件部署到Azure App Service。用户需要提供Azure订阅信息(azureSubscription
)以及Web应用程序的类型(appType
)和名称(WebAppName
)。此任务会将构建生成的文件部署到指定的Azure App Service。
工作原理
在构建流程中,用户的代码会被编译、测试和发布到指定目录。构建生成的发布文件会被推送到Azure DevOps的构建工件存储区。在发布流程中,构建生成的发布文件会被部署到Azure App Service,以便将应用程序发布到云端。
注意事项
DotNetCoreCLI@2 Publish
任务和PublishBuildArtifacts@1
任务的区别在于前者用于发布应用程序本身,而后者用于发布构建生成的发布文件到Azure DevOps工件存储区。- 如果在Azure DevOps中没有看到“Artifacts”选项,可能是因为没有构建生成的发布文件被发布到工件存储区,或者您可能需要查看其他部分以获取更多关于构建和发布的信息。
希望上述解决方案能够帮助您更好地理解Azure DevOps构建与发布过程的工作原理。如有疑问,请随时提问。