我正在尝试检测是否应该发布构建。这取决于分支是否是功能分支和(功能分支的名称存储在组变量中,或者在运行构建时设置参数)。我没有得到我期望从and()和or()中得到的逻辑,它似乎与类型强制有关。
value: $[ startsWith(variables['build.sourceBranch'], 'refs/heads/feature') ]
- name: autoPublishBranches
value: $[ contains(variables['PublishBranches'], variables['build.sourceBranch']) ]
- name: publishFeature
value: $[ and( variables.featureBuild, or( variables.autoPublishBranches, ${{ parameters.manualPublishBranch }} ))]
- name: publishToDocker
value: $[ or( variables.autoPublishNonFeature, and( variables.featureBuild, or( variables.autoPublishBranches, ${{ parameters.manualPublishBranch }} ))) ]
- name: debugTest
value: $[ or('false', and('False', or('True', False))) ]
- name: TruthTable_Or_1
value: $[ or('false', 'false') ]
- name: TruthTable_Or_2
value: $[ or('false', 'true') ]
- name: TruthTable_Or_3
value: $[ or('true', 'false') ]
- name: TruthTable_Or_4
value: $[ or('true', 'true') ]
- name: TruthTable_Or_5
value: $[ or('False', 'false') ]
- name: TruthTable_Or_6
value: $[ or('True', 'true') ]
- name: TruthTable_Or_7
value: $[ or(False, False) ]
- name: TruthTable_Or_8
value: $[ or(True, True) ]
- name: TruthTable_Or_9
value: $[ or('False', 'False') ]
- name: TruthTable_Or_10
value: $[ or('True', 'True') ]
- name: TruthTable_Or_11
value: $[ or('False', False) ]
- name: TruthTable_Or_12
value: $[ or('True', True) ]产生
featureBuild:
Parsing expression: <startsWith(variables['build.sourceBranch'], 'refs/heads/feature')>
Evaluating: startsWith(variables['build.sourceBranch'], 'refs/heads/feature')
Expanded: startsWith('refs/heads/user/dreuss/deploy_based_on_group_variable', 'refs/heads/feature')
Result: 'False'
autoPublishBranches:
Parsing expression: <contains(variables['PublishBranches'], variables['build.sourceBranch'])>
Evaluating: contains(variables['PublishBranches'], variables['build.sourceBranch'])
Expanded: contains('refs/heads/user/dreuss/deploy_based_on_group_variable,refs/heads/master', 'refs/heads/user/dreuss/deploy_based_on_group_variable')
Result: 'True'
publishFeature:
Parsing expression: <and( variables.featureBuild, or( variables.autoPublishBranches, False ))>
Evaluating: and(variables['featureBuild'], or(variables['autoPublishBranches'], False))
Expanded: and('False', or('True', False))
Result: 'True'
publishToDocker:
Parsing expression: <or( variables.autoPublishNonFeature, and( variables.featureBuild, or( variables.autoPublishBranches, False )))>
Evaluating: or(variables['autoPublishNonFeature'], and(variables['featureBuild'], or(variables['autoPublishBranches'], False)))
Expanded: or('false', and(variables['featureBuild'], or(variables['autoPublishBranches'], False)))
Result: 'True'
debugTest:
Parsing expression: <or('false', and('False', or('True', False)))>
Evaluating: or('false', and('False', or('True', False)))
Expanded: or('false', and('False', or('True', False)))
Result: 'True'
TruthTable_Or_1:
Parsing expression: <or('false', 'false')>
Evaluating: or('false', 'false')
Expanded: or('false', 'false')
Result: 'True'
TruthTable_Or_2:
Parsing expression: <or('false', 'true')>
Evaluating: or('false', 'true')
Expanded: or('false', 'true')
Result: 'True'
TruthTable_Or_3:
Parsing expression: <or('true', 'false')>
Evaluating: or('true', 'false')
Expanded: or('true', 'false')
Result: 'True'
TruthTable_Or_4:
Parsing expression: <or('true', 'true')>
Evaluating: or('true', 'true')
Expanded: or('true', 'true')
Result: 'True'
TruthTable_Or_5:
Evaluating: or('false', 'false')
Expanded: or('false', 'false')
Result: 'True'
TruthTable_Or_6:
Evaluating: or('true', 'true')
Expanded: or('true', 'true')
Result: 'True'
TruthTable_Or_7:
Parsing expression: <or(False, False)>
Evaluating: or(False, False)
Expanded: or(False, False)
Result: 'False'
TruthTable_Or_8:
Parsing expression: <or(True, True)>
Evaluating: or(True, True)
Expanded: or(True, True)
Result: 'True'
TruthTable_Or_9:
Evaluating: or('false', 'false')
Expanded: or('false', 'false')
Result: 'True'
TruthTable_Or_10:
Evaluating: or('true', 'true')
Expanded: or('true', 'true')
Result: 'True'
TruthTable_Or_11:
Parsing expression: <or('False', False)>
Evaluating: or('False', False)
Expanded: or('False', False)
Result: 'True'
TruthTable_Or_12:
Parsing expression: <or('True', True)>
Evaluating: or('True', True)
Expanded: or('True', True)
Result: 'True'不清楚为什么有时它的计算结果是'false‘vs 'False',并且根据文档和()和or()应该强制类型,但看起来它们并不是(或者我语法错误)。我想我可以使用eq(),看看这是否强制,但这比我想要的更混乱。
发布于 2021-04-26 16:42:26
https://stackoverflow.com/questions/67222706
复制相似问题