템플릿을 사용하여 파이프라인을 확장합니다.
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 은 매개 변수를 정의한 다음, 이 매개 변수 buildSteps를 azure-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"