Совсем недавно мы преобразовали нашу платформу 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 вам следует использовать Среды . Вы можете связать среды с виртуальными машинами, если хотите, хотя это и не обязательно.
При добавлении ресурсов виртуальной машины в среду конвейера он генерирует соответствующий пул развертывания с идентификатором среды.
В конвейере YAML мы можем ссылаться на среду и настраивать задания развертывания для масштабирования ресурсов виртуальной машины. Но мы не можем запускать задания развертывания конвейера YAML в пулах развертывания, созданных группами развертывания для конвейеров выпуска.
jobs:
- deployment: Deploy
environment:
name: E-Test
resourceType: virtualMachine
strategy:
runOnce:
deploy:
steps:
- script: |
echo "Running deployment job of YAML pipeline on VM resources of pipeline environment."