런타임 매개 변수
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
런타임 매개 변수를 사용하면 파이프라인에 전달할 수 있는 값을 더 많이 제어할 수 있습니다. 런타임 매개 변수를 사용하여 다음을 수행할 수 있습니다.
- 런타임 시 스크립트 및 작업에 다양한 값 제공
- 컨트롤 매개 변수 형식, 허용되는 범위 및 기본값
- 템플릿 식을 사용하여 동적으로 작업 및 단계 선택
템플릿 및 파이프라인 에서 매개 변수를 지정할 수 있습니다. 매개 변수에는 숫자 및 문자열과 같은 데이터 형식이 있으며 값의 하위 집합으로 제한될 수 있습니다. YAML의 섹션에서는 parameters
사용할 수 있는 매개 변수를 정의합니다.
매개 변수는 템플릿 구문 분석 시간에만 사용할 수 있습니다. 매개 변수는 파이프라인이 실행되기 직전에 확장되므로 로 둘러싸인 ${{ }}
값이 매개 변수 값으로 대체됩니다. 파이프라인 실행 중에 값을 보다 광범위하게 사용할 수 있어야 하는 경우 변수를 사용합니다.
참고
이 지침은 클래식 파이프라인에는 적용되지 않습니다. 클래식 파이프라인의 매개 변수는 프로세스 매개 변수(클래식)를 참조하세요.
매개 변수에는 이름 및 데이터 형식이 포함되어야 합니다. 매개 변수는 선택 사항일 수 없습니다. YAML 파일 또는 파이프라인을 실행할 때 기본값을 할당해야 합니다. 기본값을 할당하지 않거나 로 설정 default
false
하지 않으면 사용 가능한 첫 번째 값이 사용됩니다.
templateContext를 사용하여 템플릿에서 매개 변수로 사용되는 단계, 단계 및 작업에 추가 속성을 전달합니다.
파이프라인에서 매개 변수 사용
YAML 시작 부분에 런타임 매개 변수를 설정합니다.
이 예제 파이프라인에는 세 개의 image
호스트된 에이전트가 옵션으로 string
포함된 매개 변수가 포함되어 있습니다. 작업 섹션에서 값은 pool
작업을 실행하는 데 사용되는 매개 변수의 에이전트를 지정합니다. trigger
은 없음으로 설정되므로 파이프라인을 수동으로 트리거하여 실행할 때 값을 image
선택할 수 있습니다.
parameters:
- name: image
displayName: Pool Image
type: string
default: ubuntu-latest
values:
- windows-latest
- ubuntu-latest
- macOS-latest
trigger: none
jobs:
- job: build
displayName: build
pool:
vmImage: ${{ parameters.image }}
steps:
- script: echo building $(Build.BuildNumber) with ${{ parameters.image }}
파이프라인이 실행되면 풀 이미지를 선택합니다. 선택하지 않으면 기본 옵션이 ubuntu-latest
사용됩니다.
매개 변수와 함께 조건부 사용
조건부 논리의 일부로 매개 변수를 사용할 수도 있습니다. 조건부를 사용하면 조건을 충족 if
하는 경우 YAML의 일부가 실행됩니다.
매개 변수를 사용하여 실행되는 단계 결정
이 파이프라인은 파이프라인에서 테스트를 실행할지 여부를 제어하는 데 사용할 수 있는 두 번째 부울 매개 변수 test
를 추가합니다. 값 test
이 true이면 모든 테스트 실행을 출력하는 단계가 실행됩니다.
parameters:
- name: image
displayName: Pool Image
values:
- windows-latest
- ubuntu-latest
- macOS-latest
- name: test
displayName: Run Tests?
type: boolean
default: false
trigger: none
jobs:
- job: build
displayName: Build and Test
pool:
vmImage: ${{ parameters.image }}
steps:
- script: echo building $(Build.BuildNumber)
- ${{ if eq(parameters.test, true) }}:
- script: echo "Running all the tests"
매개 변수를 사용하여 사용되는 구성 설정
매개 변수를 사용하여 실행되는 작업을 설정할 수도 있습니다. 이 예제에서는 형식인 매개 변수 값 config
에 따라 다른 아키텍처가 string
빌드됩니다. 기본적으로 및 x64
아키텍처는 x86
모두 빌드됩니다.
parameters:
- name: configs
type: string
default: 'x86,x64'
trigger: none
jobs:
- ${{ if contains(parameters.configs, 'x86') }}:
- job: x86
steps:
- script: echo Building x86...
- ${{ if contains(parameters.configs, 'x64') }}:
- job: x64
steps:
- script: echo Building x64...
- ${{ if contains(parameters.configs, 'arm') }}:
- job: arm
steps:
- script: echo Building arm...
스테이지를 선택적으로 제외
매개 변수를 사용하여 스테이지 실행 여부를 설정할 수도 있습니다. 이 예제에는 각 스테이지에 대해 4개의 단계와 다른 작업이 있는 파이프라인이 있습니다. 매개 변수 runPerfTests
가 true이면 성능 테스트 단계가 실행됩니다. 의 runPerfTests
기본값은 false이므로 업데이트 없이 네 단계 중 3개만 실행됩니다.
parameters:
- name: runPerfTests
type: boolean
default: false
trigger: none
stages:
- stage: Build
displayName: Build
jobs:
- job: Build
steps:
- script: echo running Build
- stage: UnitTest
displayName: Unit Test
dependsOn: Build
jobs:
- job: UnitTest
steps:
- script: echo running UnitTest
- ${{ if eq(parameters.runPerfTests, true) }}:
- stage: PerfTest
displayName: Performance Test
dependsOn: Build
jobs:
- job: PerfTest
steps:
- script: echo running PerfTest
- stage: Deploy
displayName: Deploy
dependsOn: UnitTest
jobs:
- job: Deploy
steps:
- script: echo running UnitTest
매개 변수 반복
문자열, 숫자 및 부울 매개 변수를 반복할 수도 있습니다.
이 예제에서는 매개 변수를 반복하고 각 매개 변수의 이름과 값을 인쇄합니다. 4개의 서로 다른 매개 변수가 있으며 각 매개 변수는 서로 다른 형식을 나타냅니다. myStringName
는 한 줄 문자열입니다. myMultiString
는 여러 줄 문자열입니다. myNumber
is a number. myBoolean
는 부울 값입니다. 단계 섹션에서 스크립트 작업은 각 매개 변수의 키와 값을 출력합니다.
# start.yaml
parameters:
- name: myStringName
type: string
default: a string value
- name: myMultiString
type: string
default: default
values:
- default
- ubuntu
- name: myNumber
type: number
default: 2
values:
- 1
- 2
- 4
- 8
- 16
- name: myBoolean
type: boolean
default: true
steps:
- ${{ each parameter in parameters }}:
- script: echo ${{ parameter.Key }}
- script: echo ${{ parameter.Value }}
# azure-pipeline.yaml
trigger: none
extends:
template: start.yaml
빈 매개 변수 개체 확인
식을 사용하여 개체 매개 변수에 length()
값이 없는지 여부를 검사 수 있습니다.
parameters:
- name: foo
type: object
default: []
steps:
- checkout: none
- ${{ if eq(length(parameters.foo), 0) }}:
- script: echo Foo is empty
displayName: Foo is empty
매개 변수 데이터 형식
데이터 형식 | 참고 |
---|---|
string |
문자열 |
number |
로 제한 values: 될 수 있습니다. 그렇지 않으면 숫자와 같은 문자열이 허용됩니다. |
boolean |
true 또는 false |
object |
모든 YAML 구조체 |
step |
단일 단계 |
stepList |
단계 시퀀스 |
job |
단일 작업 |
jobList |
작업 시퀀스 |
deployment |
단일 배포 작업 |
deploymentList |
배포 작업 시퀀스 |
stage |
단일 단계 |
stageList |
단계 시퀀스 |
stepList, job, jobList, deployment, deploymentList, stage 및 stageList 데이터 형식은 모두 표준 YAML 스키마 형식을 사용합니다. 이 예제에는 문자열, 숫자, 부울, 개체, 단계 및 stepList가 포함됩니다.
parameters:
- name: myString
type: string
default: a string
- name: myMultiString
type: string
default: default
values:
- default
- ubuntu
- name: myNumber
type: number
default: 2
values:
- 1
- 2
- 4
- 8
- 16
- name: myBoolean
type: boolean
default: true
- name: myObject
type: object
default:
foo: FOO
bar: BAR
things:
- one
- two
- three
nested:
one: apple
two: pear
count: 3
- name: myStep
type: step
default:
script: echo my step
- name: mySteplist
type: stepList
default:
- script: echo step one
- script: echo step two
trigger: none
jobs:
- job: stepList
steps: ${{ parameters.mySteplist }}
- job: myStep
steps:
- ${{ parameters.myStep }}
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기