我正在使用Azure YAML管道在Azure应用服务上部署Web应用程序。
我的做法是创建了两个YAML管道,一个是构建管道,另一个是发布管道,并为不同的环境设置了多阶段,例如:开发、测试和生产环境。
我将其分成两个管道的原因是我的构建管道生成构建工件,通过在发布管道上使用“资源”部分,可以从UI中选择以前生成的构建并将其部署到任何我想要的阶段。想法是当我需要部署到其中一个阶段时,我不想每次都重新构建,而是应该能够使用以前生成的工件以及旧的构建工件版本。下面是我的发布管道以及我如何使用“资源”部分。
发布管道
trigger:
- none
resources:
pipelines:
- pipeline: myappbuild
source: build-test # name of the pipeline that produces an artifact
trigger:
branches:
- master
pool:
vmImage: 'windows-latest'
stages:
- stage: 'DeployToDev'
jobs:
- deployment: Deploy
displayName: Deploy
environment: dev
pool:
vmImage: 'windows-latest'
strategy:
runOnce:
deploy:
steps:
- download: myappbuild
artifact: drop
- task: AzureRmWebAppDeployment@4
displayName: 'Deploy Azure App Service'
inputs:
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
AppSettings: '-ASPNETCORE_ENVIRONMENT $(EnvironmentName) -ReleaseName $(Release.ReleaseName) -BuildId $(Build.BuildId)'
这个程序能正常运行。我可以从用户界面选择以前的构建版本,并将其部署到我的发布管道中任何阶段。
问题:
在发布管道中,很难知道当前每个阶段部署了什么内容。我想基于已运行的内容来确定每个环境中有哪些内容。在我的情况下,我有3个环境,我希望能够告诉哪次运行是为哪个环境的。因为经典的 UI 管道具有“发布”的概念,在一个屏幕上显示当前部署在哪个地方的构件。而在 YAML 中,您只能在“运行”部分下看到每个环境的三个绿点,无法告诉 Dev 环境上当前部署的内容。
我是否可以在一个管道中实现这一点,而不必创建两个管道?我能否只使用一个管道来进行构建和发布?我知道可以使用多阶段来实现,其中一个阶段用于构建,其他阶段用于发布。但是我不确定在这种情况下是否可以使用资源部分。我的想法是,我不想总是运行 build。如果这是可行的,请指导我正确的文档。
谢谢。