다음을 통해 공유


정의 확장

템플릿을 사용하여 파이프라인을 확장합니다.

extends:
  template: string # The template referenced by the pipeline to extend.
  parameters: # Parameters used in the extend.

이 정의를 참조하는 정의: 파이프라인

속성

template 문자열입니다.
확장할 파이프라인에서 참조하는 템플릿입니다.

템플릿 매개 변수를 parameters.
확장에 사용되는 매개 변수입니다.

Usage

extends 이 키워드는 파이프라인이 다른 파이프라인(또는 템플릿)을 기반으로 사용할 수 있게 해줍니다. 이 기능은 다음과 같은 경우에 유용합니다.

  • 파이프라인 구조 재사용: 여러 프로젝트가 확장할 수 있는 기본 파이프라인을 만드세요
  • 표준 집행: 모든 파이프라인이 반드시 포함해야 하는 단계, 작업 또는 단계를 정의하세요
  • 중복 감소: 파이프라인 전반에 걸쳐 공통 구성 공유하기
  • 템플릿 상속: 매개변수가 있는 템플릿에서 파이프라인을 구축합니다

파이프라인은 단일 템플릿을 확장할 수 있습니다. 템플릿 파일은 완전하고 유효한 파이프라인 구조여야 합니다. 를 사용하면 extends파이프라인 YAML이 기본 템플릿을 참조하고 선택적으로 매개변수를 덮어쓰는 템플릿이 됩니다.

확장과 포함

  • extends템플릿에서 상속받는 파이프라인을 생성합니다. 파이프라인의 루트 레벨에서 사용됩니다.
  • include: 템플릿 콘텐츠를 직접 가져오는 기능입니다. 파이프라인 내 특정 지점에서 사용됩니다.

예시

기본 확장 예시

가장 간단한 방법은 extends 파이프라인이 기본 템플릿에서 단계와 작업을 상속받는 것입니다.

# File: base-pipeline.yml
# This is the base template that other pipelines extend
trigger:
  - main

pool:
  vmImage: 'ubuntu-latest'

stages:
- stage: Build
  jobs:
  - job: BuildJob
    steps:
    - script: echo Building...
      displayName: 'Build step'
# File: azure-pipelines.yml
# This pipeline extends the base template
extends:
  template: base-pipeline.yml

이 예시에서 파이프라인 azure-pipelines.yml 은 트리거, 풀, 단계, 작업 base-pipeline.yml들을 물려받습니다.

매개변수로 확장됨

템플릿을 확장할 때 매개변수를 전달할 수 있습니다:

# File: base-pipeline.yml
parameters:
- name: buildConfiguration
  type: string
  default: 'Debug'

trigger:
  - main

pool:
  vmImage: 'ubuntu-latest'

stages:
- stage: Build
  jobs:
  - job: BuildJob
    steps:
    - script: echo Building with configuration ${{ parameters.buildConfiguration }}
      displayName: 'Build step'
# File: azure-pipelines.yml
extends:
  template: base-pipeline.yml
  parameters:
    buildConfiguration: 'Release'

확장 기능이 있는 다단계 파이프라인

템플릿에서 여러 단계를 상속할 수 있습니다 extends . 이는 프로젝트 전반에 걸쳐 일관된 파이프라인 구조를 원하는 팀에 유용합니다.

# File: multi-stage-template.yml
# This template defines a complete three-stage pipeline
trigger:
  - main

pool:
  vmImage: 'ubuntu-latest'

stages:
- stage: Build
  displayName: 'Build Stage'
  jobs:
  - job: BuildJob
    displayName: 'Build Job'
    steps:
    - script: npm install
      displayName: 'Install dependencies'
    - script: npm run build
      displayName: 'Build application'

- stage: Test
  displayName: 'Test Stage'
  dependsOn: Build
  jobs:
  - job: TestJob
    displayName: 'Run Tests'
    steps:
    - script: npm run test
      displayName: 'Run unit tests'
    - script: npm run lint
      displayName: 'Run linter'

- stage: Deploy
  displayName: 'Deploy Stage'
  dependsOn: Test
  jobs:
  - job: DeployJob
    displayName: 'Deploy Job'
    steps:
    - script: npm run deploy
      displayName: 'Deploy to production'
# File: azure-pipelines.yml
extends:
  template: multi-stage-template.yml

이 예시에서 파이프라인은 템플릿에서 빌드, 테스트, 배포 세 단계와 그 의존성 및 작업 정의를 자동으로 상속받습니다.

확장된 타입 안전 매개변수

템플릿 및 해당 매개 변수는 파이프라인이 실행되기 전에 상수로 바꿔집니다. 템플릿 매개 변수는 입력 매개 변수에 대한 형식 보안을 제공합니다. 이 예제에서 템플릿 start.yml 은 매개 변수를 정의한 다음, 이 매개 변수 buildStepsazure-pipelines.yml정의합니다. 스크립트 단계와 함께 buildStep이 전달되면 거부되고 파이프라인 빌드가 실패합니다.

# File: start.yml
parameters:
- name: buildSteps # the name of the parameter is buildSteps
  type: stepList # data type is StepList
  default: [] # default value of buildSteps
stages:
- stage: secure_buildstage
  pool:
    vmImage: windows-latest
  jobs:
  - job: secure_buildjob
    steps:
    - script: echo This happens before code 
      displayName: 'Base: Pre-build'
    - script: echo Building
      displayName: 'Base: Build'

    - ${{ each step in parameters.buildSteps }}:
      - ${{ each pair in step }}:
          ${{ if ne(pair.value, 'CmdLine@2') }}:
            ${{ pair.key }}: ${{ pair.value }}       
          ${{ if eq(pair.value, 'CmdLine@2') }}: 
            # Step is rejected by raising a YAML syntax error: Unexpected value 'CmdLine@2'
            '${{ pair.value }}': error         

    - script: echo This happens after code
      displayName: 'Base: Signing'
# File: azure-pipelines.yml
trigger:
- main

extends:
  template: start.yml
  parameters:
    buildSteps:  
      - bash: echo Test #Passes
        displayName: succeed
      - bash: echo "Test"
        displayName: succeed
      # Step is rejected by raising a YAML syntax error: Unexpected value 'CmdLine@2'
      - task: CmdLine@2
        inputs:
          script: echo "Script Test"
      # Step is rejected by raising a YAML syntax error: Unexpected value 'CmdLine@2'
      - script: echo "Script Test"

참고하십시오