我在 jenkins 脚本中有一些条件命令,但它没有给出我预期的输出,所以我将它们分解如下:
echo "PY38_RELEASE: ${env.PY38_RELEASE}"
echo "TAG_NAME: ${env.TAG_NAME}"
echo "TAG_NAME: ${env.TAG_NAME != null}"
echo "condition: ${env.PY38_RELEASE || env.TAG_NAME}"
echo "condition: ${env.PY38_RELEASE || env.TAG_NAME != null}"
然后我观察输出,我得到了这个:
[2024-03-14T02:18:14.115Z] PY38_RELEASE: false
[2024-03-14T02:18:14.125Z] TAG_NAME: null
[2024-03-14T02:18:14.135Z] TAG_NAME: false
[2024-03-14T02:18:14.145Z] condition: true
[2024-03-14T02:18:14.155Z] condition: true
当
env.PY38_RELEASE
为假且 env.TAG_NAME != null
为假时,我不明白,但是他们的 OR
为真。我哪里弄错了?
我相信发生的事情是
env.PY38_RELEASE
的值是 string 'false'
,而不是布尔值 false
。
我建议在你的脚本中写下:
def real_py38_release = env.PY38_RELEASE && (env.PY38_RELEASE != 'false')
然后根据您的情况使用
real_py38_release
之前使用 env.PY38_RELEASE
的位置。