Azure DEVOPS предоставляет два способа создания трубопроводов CI и трубопроводы CD (выпуске). Классический редактор и ямл. Классический редактор предоставляет UI для создания трубопроводов, и это требует двух шагов.
- Построить трубопровод
- Освобождать трубопровод
Классический редактор был способ создания по умолчанию для создания трубопроводов и релизов до того, как был введен YAML. Однако с классическим редактором, создающим отдельный выпускной трубопровод для каждого проекта, является утомительной задачей по сравнению с одним трубопроводом в YAML.
С YAML как CI и CD-задачами могут быть версиями, контролируемыми в отличие от классического редактора.
Использование YAML — это новый подход создания трубопроводов, где мы можем включать в себя шаги CI/CD в одном файле yaml.
По умолчанию создаются трубопроводы YAML при создании конвейера сборки. Мы можем включать шаги CD, добавив Этапы
Отказ
Простой трубопровод с построить
, Тест
и Опубликовать постановку
Похоже, (сосредоточиться только на количестве этапов этапы
, специфики в задачах не имеют значения в этом контексте)
trigger: - master variables: debug: true solution: '**/*.sln' buildPlatform: 'Any CPU' buildConfiguration: 'Release' iISDeploymentType: 'IISWebsite' stages: - stage: Build jobs: - job: Build pool: vmImage: 'windows-latest' steps: - task: NuGetToolInstaller@1 - task: NuGetCommand@2 inputs: restoreSolution: '$(solution)' - task: VSBuild@1 inputs: solution: '$(solution)' msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' - task: VSTest@2 inputs: platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' - task: PublishPipelineArtifact@1 inputs: targetPath: '$(build.artifactStagingDirectory)\Test.Web.zip' artifact: 'drop' - stage: DeployStaging displayName: 'Deploy to staging' dependsOn: 'Build' condition: succeeded() jobs: - deployment: DeployWeb displayName: Deploy Test API pool: vmImage: 'windows-latest' environment: name: test-stg resourceType: VirtualMachine tags: web strategy: runOnce: deploy: steps: - task: DownloadPipelineArtifact@2 inputs: path: '$(System.ArtifactsDirectory)' artifactName: 'drop' - task: IISWebAppManagementOnMachineGroup@0 displayName: 'IIS Web App Manage' inputs: IISDeploymentType: 'IISWebsite' ActionIISWebsite: 'CreateOrUpdateWebsite' WebsiteName: 'TestCloudTestDemo' websitePhysicalPath: '%SystemDrive%\inetpub\wwwroot' websitePhysicalPathAuth: 'WebsiteUserPassThrough' AddBinding: true protocol: 'http' iPAddress: 'All Unassigned' port: '85' Bindings: CreateOrUpdateAppPoolForWebsite: true AppPoolNameForWebsite: 'TestCloudTestDemo' ParentWebsiteNameForVD: '$(Parameters.WebsiteName)' virtualPathForVD: physicalPathForVD: '%SystemDrive%\inetpub\wwwroot' ParentWebsiteNameForApplication: '$(Parameters.WebsiteName)' VirtualPathForApplication: '$(Parameters.VirtualPathForApplication)' AppPoolName: '$(Parameters.AppPoolName)' appPoolNameForApplication: dotNetVersionForApplication: 'v4.0' pipeLineModeForApplication: 'Integrated' appPoolIdentityForApplication: 'ApplicationPoolIdentity' - task: IISWebAppDeploymentOnMachineGroup@0 displayName: 'IIS Web App Deploy' inputs: WebSiteName: 'TestCloudTestDemo' package: '$(System.ArtifactsDirectory)\**\*.zip' XmlVariableSubstitution: True
Этот трубопровод имеет два этапа. Построить
Этап строит, тестирует и публикует артефакт на следующий этап. Это довольно важно. В противном случае следующий этап не может получить доступ к созданию артефакта, поскольку он собирается развернуть (CD Stage) артефакт на Постановка
окружающая обстановка.
Развертывание
Этап зарабатывает артефакт сборки с более раннего этапа и управляет двумя задачами, чтобы развернуть артефакт в IIS. Обратите внимание, как Состояние
используется на последнем этапе. Условия могут быть использованы для контроля выполнения каждого этапа в трубопроводе. Например, если у нас есть 3 этапа (тест, тестирование, постановка и продукт), и нам нужно только до постановки, условия могут использоваться для контроля выполнения.
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
Это условие относится к отрасли, на которой был сделан коммин. Только если это была главная ветвь, этот этап будет выполняться.
Список литературы: https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started/pipelines-get-started?view=azure-devops.
https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema%2Cparameter-schema
Оригинал: «https://dev.to/rajikaimal/azure-devops-ci-cd-yaml-pipeline-4glj»