다음을 통해 공유


jobs.deployment.strategy.rolling 정의

롤링 배포는 이전 버전의 애플리케이션 인스턴스를 각 반복의 고정된 가상 머신 집합(롤링 집합)에 있는 새 버전의 애플리케이션 인스턴스로 바꿉니다.

rolling:
  maxParallel: string # Maximum number of jobs running in parallel.
  preDeploy: # Pre deploy hook for rolling deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where pre deploy steps will run.
  deploy: # Deploy hook for rolling deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where deploy steps will run.
  routeTraffic: # Route traffic hook for rolling deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where route traffic steps will run.
  postRouteTraffic: # Post route traffic hook for rolling deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where post route traffic steps will run.
  on: # On success or failure hook for rolling deployment strategy.
    failure: # Runs on failure of any step.
      steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
      pool: string | pool # Pool where post on failure steps will run.
    success: # Runs on success of all of the steps.
      steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
      pool: string | pool # Pool where on success steps will run.

이 정의를 참조하는 정의: jobs.deployment.strategy

속성

maxParallel 문자열.
병렬로 실행되는 최대 작업 수입니다.

preDeploypreDeployHook.
롤링 배포 전략을 위한 사전 배포 후크입니다.

deploydeployHook.
롤링 배포 전략을 위한 후크를 배포합니다.

routeTrafficrouteTrafficHook.
롤링 배포 전략을 위한 트래픽 후크를 라우팅합니다.

postRouteTrafficpostRouteTrafficHook.
롤링 배포 전략을 위한 사후 경로 트래픽 후크입니다.

ononSuccessOrFailureHook.
롤링 배포 전략의 성공 또는 실패 후크.

설명

Azure Pipelines는 현재 VM 리소스에 대한 롤링 전략만 지원합니다.

예를 들어 롤링 배포는 일반적으로 다음 배포 집합으로 진행하기 전에 각 가상 머신 집합의 배포가 완료되기를 기다립니다. 각 반복 후 상태 검사 수행할 수 있으며 중요한 문제가 발생하면 롤링 배포를 중지할 수 있습니다.

롤링 배포는 노드 아래에 strategy: 키워드(keyword) rolling: 지정하여 구성할 수 있습니다. 변수는 strategy.name 전략의 이름을 사용하여 이 전략 블록에서 사용할 수 있습니다. 이 경우 롤링합니다.

모든 수명 주기 후크가 지원되며 각 VM에서 실행되도록 수명 주기 후크 작업이 만들어집니다.

preDeploy, deploy, routeTrafficpostRouteTraffic 는 에서 정의 maxParallel한 일괄 처리 크기당 한 번 실행됩니다. 그런 다음, on: success 또는 on: failure가 실행됩니다.

를 사용하면 maxParallel: <# or % of VMs>병렬로 배포할 가상 머신 대상의 수/비율을 제어할 수 있습니다. 이렇게 하면 앱이 이러한 컴퓨터에서 실행되고 있으며 나머지 컴퓨터에서 배포가 진행되는 동안 요청을 처리할 수 있으므로 전체 가동 중지 시간이 줄어듭니다.

참고

이 기능에는 몇 가지 알려진 간격이 있습니다. 예를 들어 스테이지를 다시 시도하면 실패한 대상뿐만 아니라 모든 VM에서 배포를 다시 실행합니다.

수명 주기 후크에 대한 설명

preDeploy: 애플리케이션 배포가 시작되기 전에 리소스를 초기화하는 단계를 실행하는 데 사용됩니다.

deploy: 애플리케이션을 배포하는 단계를 실행하는 데 사용됩니다. 아티팩트 다운로드 작업은 배포 작업에 대한 후크에 deploy 만 자동으로 삽입됩니다. 아티팩트 다운로드를 중지하려면 파이프라인 아티팩트 다운로드 작업을 지정하여 다운로드할 특정 아티팩트 를 사용 - download: none 하거나 선택합니다.

routeTraffic: 업데이트된 버전으로 트래픽을 제공하는 단계를 실행하는 데 사용됩니다.

postRouteTraffic: 트래픽이 라우팅된 후 단계를 실행하는 데 사용됩니다. 일반적으로 이러한 작업은 정의된 간격 동안 업데이트된 버전의 상태를 모니터링합니다.

on: failure또는 on: success: 롤백 작업 또는 클린 단계를 실행하는 데 사용됩니다.

예제

VM에 대한 다음 롤링 전략 예제는 각 반복에서 최대 5개의 대상을 업데이트합니다. maxParallel은 동시에 배포할 수 있는 대상의 수를 결정합니다. 이 선택 항목은 배포되는 대상을 제외하고 언제든지 사용할 수 있어야 하는 대상의 절대 수 또는 백분율을 계산합니다. 또한 배포 중에 성공 및 실패 조건을 확인하는 데도 사용됩니다.

jobs: 
- deployment: VMDeploy
  displayName: web
  environment:
    name: smarthotel-dev
    resourceType: VirtualMachine
  strategy:
    rolling:
      maxParallel: 5  #for percentages, mention as x%
      preDeploy:
        steps:
        - download: current
          artifact: drop
        - script: echo initialize, cleanup, backup, install certs
      deploy:
        steps:
        - task: IISWebAppDeploymentOnMachineGroup@0
          displayName: 'Deploy application to Website'
          inputs:
            WebSiteName: 'Default Web Site'
            Package: '$(Pipeline.Workspace)/drop/**/*.zip'
      routeTraffic:
        steps:
        - script: echo routing traffic
      postRouteTraffic:
        steps:
        - script: echo health check post-route traffic
      on:
        failure:
          steps:
          - script: echo Restore from backup! This is on failure
        success:
          steps:
          - script: echo Notify! This is on success

추가 정보