런타임 매개 변수

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

런타임 매개 변수를 사용하면 파이프라인에 전달할 수 있는 값을 더 많이 제어할 수 있습니다. 런타임 매개 변수를 사용하여 다음을 수행할 수 있습니다.

  • 런타임 시 스크립트 및 작업에 다양한 값 제공
  • 컨트롤 매개 변수 형식, 허용되는 범위 및 기본값
  • 템플릿 식을 사용하여 동적으로 작업 및 단계 선택

템플릿 및 파이프라인 에서 매개 변수를 지정할 수 있습니다. 매개 변수에는 숫자 및 문자열과 같은 데이터 형식이 있으며 값의 하위 집합으로 제한될 수 있습니다. YAML의 섹션에서는 parameters 사용할 수 있는 매개 변수를 정의합니다.

매개 변수는 템플릿 구문 분석 시간에만 사용할 수 있습니다. 매개 변수는 파이프라인이 실행되기 직전에 확장되므로 로 둘러싸인 ${{ }} 값이 매개 변수 값으로 대체됩니다. 파이프라인 실행 중에 값을 보다 광범위하게 사용할 수 있어야 하는 경우 변수를 사용합니다.

참고

이 지침은 클래식 파이프라인에는 적용되지 않습니다. 클래식 파이프라인의 매개 변수는 프로세스 매개 변수(클래식)를 참조하세요.

매개 변수에는 이름 및 데이터 형식이 포함되어야 합니다. 매개 변수는 선택 사항일 수 없습니다. YAML 파일 또는 파이프라인을 실행할 때 기본값을 할당해야 합니다. 기본값을 할당하지 않거나 로 설정 defaultfalse하지 않으면 사용 가능한 첫 번째 값이 사용됩니다.

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 }}