因此,我正在使用 azure YAML 管道在 Azure 应用服务上部署一个 Web 应用程序。
我这样做的方式是创建了 2 个 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)'
这运行良好。我可以从 UI 中选择以前的构建,并将该构建部署到我发布管道中的任何阶段。
问题:
在发布管道中,很难说当前在什么阶段部署了什么。我希望能够根据运行的内容来判断每个环境中的内容。所以就我而言,我有 3 个环境,我希望能够分辨出哪个运行是针对哪个环境的。因为经典 UI 管道有一个发布概念,它显示当前部署的工件仅在 1 个屏幕中。其中 YAML 对于我在 Runs 部分下的每个环境,您只能看到 3 个绿点,这并不能说明 Dev 阶段当前部署的内容。
我可以在一个管道中实现这一点,而不是创建 2 个管道吗?我可以只有 1 个管道来构建和发布吗?我知道可以有一个多阶段,我可以有一个阶段用于构建,而其他阶段用于我的发布。但是我如何能够选择以前的构建部署到任何阶段。因为我不确定我是否可以在这个用例中使用资源部分。想法是我不想一直运行构建。如果这是可以实现的,有人可以指导我更正文件吗?
谢谢你。