Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Les instructions conditionnelles commencent par l'attribut du document de if
déclaration. Le but ultime de l'if
instruction est de déterminer s'il faut exécuter l'action de l'étape ou l'ignorer. Si l'if
instruction est résolue partrue
, l'action de l'étape est exécutée. Si le problème est résolufalse
, Image Builder ignore l'action de l'étape et enregistre le statut de l'étape SKIPPED
dans le journal.
L'if
instruction prend en charge les instructions de branchement (and
,or
) et les modificateurs conditionnels (not
). Il prend également en charge les opérateurs de comparaison suivants qui effectuent des comparaisons de valeurs (égal, inférieur à, supérieur à) en fonction des types de données qu'il compare (chaîne ou nombre).
Opérateurs de comparaison pris en charge
-
booleanEquals
-
numberEquals
-
numberGreaterThan
-
numberGreaterThanEquals
-
numberLessThan
-
numberLessThanEquals
-
stringEquals
Règles relatives aux instructions de branchement et aux modificateurs conditionnels
Les règles suivantes s'appliquent aux instructions de branchement (and
,or
) et aux modificateurs conditionnels (not
).
-
Les instructions de branchement et les modificateurs conditionnels doivent apparaître seuls sur une ligne.
-
Les instructions de branchement et les modificateurs conditionnels doivent respecter les règles de niveau.
-
Il ne peut y avoir qu'une seule déclaration au niveau du parent.
-
Chaque branche ou modificateur enfant commence un nouveau niveau.
Pour plus d'informations sur les niveaux, consultezNiveaux imbriqués dans les instructions conditionnelles.
-
-
Chaque instruction secondaire doit comporter au moins une instruction conditionnelle secondaire, mais pas plus de dix.
-
Les modificateurs conditionnels ne fonctionnent que sur une seule instruction conditionnelle enfant.
Niveaux imbriqués dans les instructions conditionnelles
Les déclarations conditionnelles fonctionnent à plusieurs niveaux dans une section qui leur est propre. Par exemple, l'attribut if
statement apparaît au même niveau dans votre document de flux de travail que le nom et l'action de l'étape. Il s'agit de la base de l'énoncé conditionnel.
Vous pouvez spécifier jusqu'à quatre niveaux d'instructions conditionnelles, mais une seule instruction peut apparaître au niveau parent. Toutes les autres instructions de branchement, modificateurs conditionnels ou opérateurs conditionnels sont indentés à partir de là, un retrait par niveau.
Le schéma suivant indique le nombre maximal de niveaux imbriqués pour une instruction conditionnelle.
base: parent: - child (level 2) - child (level 3) child (level 4)
- Attribut
if
-
L'
if
attribut spécifie l'instruction conditionnelle en tant qu'attribut de document. C'est le niveau zéro. - Niveau parental
-
Il s'agit du premier niveau d'imbrication pour les instructions conditionnelles. Il ne peut y avoir qu'une seule déclaration à ce niveau. Si vous n'avez pas besoin de branchement ou de modificateurs, il peut s'agir d'un opérateur conditionnel sans instructions enfant. Ce niveau n'utilise pas la notation en tirets, sauf pour les opérateurs conditionnels.
- Niveaux pour enfants
-
Les niveaux 2 à 4 sont considérés comme des niveaux pour enfants. Les instructions enfant peuvent inclure des instructions de branchement, des modificateurs conditionnels ou des opérateurs conditionnels.
Exemple : niveaux imbriqués
L'exemple suivant montre le nombre maximal de niveaux dans une instruction conditionnelle.
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"
Règles de nidification
-
Chaque branche ou modificateur au niveau de l'enfant ouvre un nouveau niveau.
-
Chaque niveau est indenté.
-
Il peut y avoir un maximum de quatre niveaux, dont une instruction, un modificateur ou un opérateur au niveau parent, et jusqu'à trois niveaux supplémentaires.
Exemples de déclarations conditionnelles
Ce groupe d'exemples montre différents aspects des déclarations conditionnelles.
Branchement : et
L'instruction de and
branchement fonctionne sur une liste d'expressions qui sont des enfants de la branche, qui doivent toutes être évaluées àtrue
. Image Builder évalue les expressions dans l'ordre dans lequel elles apparaissent dans la liste. Si une expression est évaluée àfalse
, le traitement s'arrête et la branche est prise en comptefalse
.
L'exemple suivant évalue àtrue
, car les deux expressions sont évaluées àtrue
.
if:
and:
- stringEquals: 'test_string'
value: 'test_string'
- numberEquals: 1
value: 1
Branchement : ou
L'instruction de or
branchement fonctionne sur une liste d'expressions qui sont des enfants de la branche, dont au moins l'une doit être évaluée àtrue
. Image Builder évalue les expressions dans l'ordre dans lequel elles apparaissent dans la liste. Si une expression est évaluée àtrue
, le traitement s'arrête et la branche est prise en comptetrue
.
L'exemple suivant évalue àtrue
, même si la première expression estfalse
.
if:
or:
- stringEquals: 'test_string'
value: 'test_string_not_equal'
- numberEquals: 1
value: 1
Modificateur conditionnel : non
Le modificateur not
conditionnel annule les instructions conditionnelles qui sont les enfants de la branche.
L'exemple suivant indique true
quand le not
modificateur annule l'instruction stringEquals
conditionnelle.
if:
not:
- stringEquals: 'test_string'
value: 'test_string_not_equal'
Déclaration conditionnelle : BooleanEquals
L'opérateur de booleanEquals
comparaison compare les valeurs booléennes et renvoie vrai si les valeurs booléennes correspondent exactement.
L'exemple suivant détermine si cette option collectImageScanFindings
est activée.
if:
- booleanEquals: true
value: '$.imagebuilder.collectImageScanFindings'
Déclaration conditionnelle : StringEquals
L'opérateur de stringEquals
comparaison compare deux chaînes et renvoie la valeur true si les chaînes correspondent exactement. Si l'une des valeurs n'est pas une chaîne, Image Builder la convertit en chaîne avant de procéder à la comparaison.
L'exemple suivant compare la variable système de plate-forme pour déterminer si le flux de travail s'exécute sur une plate-forme Linux.
if:
- stringEquals: 'Linux'
value: '$.imagebuilder.Platform'
Déclaration conditionnelle : NumberEquals
L'opérateur de numberEquals
comparaison compare deux nombres et renvoie la valeur true s'ils sont égaux. Les nombres à comparer doivent être dans l'un des formats suivants.
-
Entier
-
Float
-
Une chaîne qui correspond au modèle d'expression régulière suivant :
^-?[0-9]+(\.)?[0-9]+$
.
Les exemples de comparaison suivants évaluent tous à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