GitHub Actions表达式上下文的真值/假值判定及未定义输出处理
GitHub Actions表达式评估与真值假值规则
未定义输出/变量的求值结果
未定义的输出、环境变量或变量,在GitHub Actions表达式中会被求值为空字符串(""),而非null。
真值与假值判定逻辑
在表达式上下文中,以下内容会被判定为假值:
- 空字符串(
"") - 布尔值
false - 数字
0 - 空数组(
[]) - 空对象(
{}) - 未定义的变量/输出(因会被转换为空字符串)
其余所有值均为真值,比如非空字符串、布尔值true、非零数字、非空数组/对象等。
你的工作流问题解析
你提供的init任务中,steps.setenv步骤仅输出了HelloWorld!,但未通过echo "foobar=值" >> $GITHUB_OUTPUT的方式设置输出变量,导致steps.setenv.outputs.foobar为空字符串,进而needs.init.outputs.foobar也为空字符串。
deploy任务的if条件判断的是空字符串(假值),因此任务不会触发运行。
优化建议
若要避免未定义输出导致的条件不满足,可两种方式处理:
- 给输出设置默认值:
outputs: foobar: ${{ steps.setenv.outputs.foobar || 'default_value' }}
- 在
if条件中显式检查非空:
if: needs.init.outputs.foobar != ''
内容的提问来源于stack exchange,提问作者Shuzheng
相关产品推荐
相关产品推荐

