기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
조건문은 if
문 문서 속성으로 시작합니다. if
문의 궁극적인 목적은 단계 작업을 실행할지 아니면 건너뛰는지 결정하는 것입니다. if
문이 true
로 확인되면 단계 작업이 실행됩니다. false
로 확인되면 Image Builder는 단계 작업을 건너뛰고 로그에 SKIPPED
단계 상태를 기록합니다.
if
문은 분기 명령문(and
, or
)과 조건부 수정자(not
)를 지원합니다. 또한 비교하는 데이터 유형(문자열 또는 숫자)에 따라 값을 비교(같음, 보다 작음, 보다 큼)하는 다음 조건문도 지원합니다.
지원되는 비교 연산자
-
booleanEquals
-
numberEquals
-
numberGreaterThan
-
numberGreaterThanEquals
-
numberLessThan
-
numberLessThanEquals
-
stringEquals
분기 명령문 및 조건부 수정자 규칙
분기 명령문(and
, or
) 및 조건부 수정자(not
)에는 다음 규칙이 적용됩니다.
-
분기문과 조건부 수정자는 한 줄에 단독으로 나타나야 합니다.
-
분기문과 조건부 수정자는 레벨 규칙을 따라야 합니다.
-
상위 수준에는 문이 하나만 있을 수 있습니다.
-
각 하위 분기 또는 수정자는 새 레벨을 시작합니다.
레벨에 대한 자세한 내용은 조건문의 중첩 수준 섹션을 참조하세요.
-
-
각 분기문에는 하위 조건문이 1개 이상 10개 이하로 있어야 합니다.
-
조건부 수정자는 하위 조건문 하나에만 사용할 수 있습니다.
조건문의 중첩 수준
조건문은 자체 섹션의 여러 수준에서 작동합니다. 예를 들어 if
문 속성은 워크플로 문서에서 단계 이름 및 작업과 동일한 수준에 나타납니다. 이것이 조건문의 기본입니다.
조건문 수준은 최대 4개 지정할 수 있지만 상위 수준에는 문 하나만 나타날 수 있습니다. 다른 모든 분기문, 조건부 수정자 또는 조건 연산자는 여기에서 수준당 하나씩 들여쓰기됩니다.
다음 개요는 조건문의 최대 중첩 레벨 수를 보여줍니다.
base: parent: - child (level 2) - child (level 3) child (level 4)
if
속성-
if
속성은 조건문을 문서 속성으로 지정합니다. 이 레벨은 0입니다. - 상위 수준
-
조건문의 첫 번째 중첩 레벨입니다. 이 수준에는 문이 하나만 있을 수 있습니다. 분기 또는 수정자가 필요하지 않은 경우 하위 명령문이 없는 조건부 연산자를 사용할 수 있습니다. 이 수준에서는 조건 연산자를 제외하고 대시 표기법을 사용하지 않습니다.
- 하위 수준
-
레벨 2~4는 하위 수준으로 간주합니다. 하위 명령문에는 분기문, 조건부 수정자 또는 조건 연산자가 포함될 수 있습니다.
예: 중첩 수준
다음 예제에서는 조건문 내 최대 레벨 수를 보여줍니다.
if:
and: #first level
- stringEquals: 'my_string' #second level
value: 'my_string'
- and: #also second level
- numberEquals: '1' #third level
value: 1
- not: #also third level
stringEquals: 'second_string' #fourth level
value: "diff_string"
중첩 규칙
-
하위 수준의 각 분기 또는 수정자는 새 레벨을 시작합니다.
-
각 레벨이 들여쓰기됩니다.
-
명령문, 수정자 또는 상위 수준의 연산자 하나를 포함하여 최대 4개의 수준이 있을 수 있으며, 추가 수준은 최대 3개까지 가능합니다.
조건문 예제
이 예제 그룹은 조건문의 다양한 측면을 보여줍니다.
브랜치: and
and
분기문은 분기의 하위 표현식 목록에서 연산을 수행하며, 이들 표현식은 모두 true
로 평가되어야 합니다. Image Builder는 목록에 나타나는 순서대로 표현식을 평가합니다. false
로 평가되는 표현식이 있으면 처리가 중지되고 분기가 false
로 고려됩니다.
다음 예제에서는 두 표현식 모두 true
로 평가되기 때문에 true
로 평가합니다.
if:
and:
- stringEquals: 'test_string'
value: 'test_string'
- numberEquals: 1
value: 1
브랜치: or
or
분기문은 분기의 하위 표현식 목록에서 연산을 수행하며, 이들 표현식 중 1개 이상은 true
로 평가되어야 합니다. Image Builder는 목록에 나타나는 순서대로 표현식을 평가합니다. true
로 평가되는 표현식이 있으면 처리가 중지되고 분기가 true
로 고려됩니다.
다음 예제에서는 첫 번째 표현식이 true
임에도 false
로 평가합니다.
if:
or:
- stringEquals: 'test_string'
value: 'test_string_not_equal'
- numberEquals: 1
value: 1
조건부 수정자: not
not
조건부 수정자는 분기의 하위 항목인 조건문을 무효화합니다.
다음 예제에서는 not
수정자가 stringEquals
조건문을 부정하는 경우 true
로 평가합니다.
if:
not:
- stringEquals: 'test_string'
value: 'test_string_not_equal'
조건문: booleanEquals
booleanEquals
조건문 연산자는 부울 값을 비교하고 부울 값이 정확히 일치하면 true를 반환합니다.
다음 예제에서는 collectImageScanFindings
의 활성화 여부를 확인합니다.
if:
- booleanEquals: true
value: '$.imagebuilder.collectImageScanFindings'
조건문: stringEquals
stringEquals
조건문 연산자는 두 문자열을 비교하고 문자열이 정확히 일치하면 true를 반환합니다. 두 값 중 하나가 문자열이 아닌 경우 Image Builder는 비교하기 전에 해당 값을 문자열로 변환합니다.
다음 예제에서는 플랫폼 시스템 변수를 비교하여 워크플로가 Linux 플랫폼에서 실행되고 있는지 확인합니다.
if:
- stringEquals: 'Linux'
value: '$.imagebuilder.Platform'
조건문: numberEquals
numberEquals
비교 연산자는 두 숫자를 비교하고 숫자가 같으면 true를 반환합니다. 비교할 숫자는 다음 형식 중 하나여야 합니다.
-
Integer
-
Float
-
다음 정규식 패턴과 일치하는 문자열:
^-?[0-9]+(\.)?[0-9]+$
다음 예제 비교는 모두 true
로 평가됩니다.
if:
# Value provider as a number
numberEquals: 1
value: '1'
# Comparison value provided as a string
numberEquals: '1'
value: 1
# Value provided as a string
numberEquals: 1
value: '1'
# Floats are supported
numberEquals: 5.0
value: 5.0
# Negative values are supported
numberEquals: -1
value: -1