Рубрики
Uncategorized

Azure DevOps CI / CD: Стадии трубопроводов YAML

Лазурный трубопровод ямл. Теги с Azure, DevOps, CICD.

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»