我们最近刚刚将 Azure 盒子转换为最新版本。 因此,我们一直在检查我们的项目并重新连接管道(因为我们的服务器也发生了变化)。 当我们这样做时,我注意到我们的新应用程序正在使用 .Net Core,因此它们的构建和部署是 yaml 文件,而不是经典管道。 因此,这些项目使用的环境是直接在我们想要发布和部署到的盒子上的部署代理。
这个过程之前是有效的,但由于我们没有人真正了解 Azure DevOps,我们想知道为什么 yaml 文件无法使用已经设置的部署池。 较旧的经典管道都针对这些。 这听起来是一个更好的选择:让一个部署代理处理单个机器上的所有部署,而不是在一个机器上运行多个部署代理。
但是,环顾四周,我找不到任何提示我使用与 yaml 相关的部署池的内容。 Yaml 似乎只适用于专门为项目更新和创建的环境。 有人可以告诉我我想做的事情是否可能吗? 如果是,我该如何设置我的 yaml 文件来执行此操作? 我将在下面发布我的 yaml 文件,这样您就知道它之前在环境中做了什么。
trigger:
- none
variables:
IISWebsiteName: 'DevOpsApplications'
IISWebApplicationName: 'TestApplication'
resources:
pipelines:
- pipeline: 'buildPipeline'
project: 'TestProjectApplication'
source: 'Build Pipeline'
branch: trunk
stages:
- stage: DeployWebsite
displayName: 'Deploy Website'
pool:
name: 'Default'
jobs:
- deployment: DeployWebsite
displayName: 'Deploy Website'
environment: 'THISWASTHEENVIRONMENT_BEFORECHANGE'
strategy:
runOnce:
deploy:
steps:
- checkout: none
- download: 'buildPipeline'
name: 'DownloadBuildArtifacts'
displayName: 'Download Build Artifacts'
artifact: 'TestAppArtifact'
- task: IISWebAppManagementOnMachineGroup@0
name: 'StopIIS'
displayName: 'Stop Website'
inputs:
IISDeploymentType: 'IISWebsite'
ActionIISWebsite: 'StopWebsite'
StartStopWebsiteName: '${{ variables.IISWebsiteName }}'
- task: IISWebAppManagementOnMachineGroup@0
name: 'DeployWebService'
displayName: 'Deploy Web Service Application'
inputs:
WebSiteName: '${{ variables.IISWebsiteName }}'
VirtualApplication: '${{ variables.IISWebApplicationName }}'
Package: '$(Pipeline.Workspace)\buildPipeline\TestApplication\TestProject'
TakAppOfflineFlag: true
- task:
name: 'StartIIS'
displayName: 'Start IIS Website'
inputs:
IISDeploymentType: 'IISWebsite'
ActionIISWebsite: 'StartWebsite'
StartStopWebsiteName: '${{ variables.IISWebsiteName }}'
我可以在 Yaml 中使用部署池吗?
根据 YAML 与经典管道,部署组(和部署池)仅在经典发布管道中可用。
使用 YAML 管道时,您应该使用 Environments。如果需要,您可以将环境与虚拟机关联,但这不是必需的。