GitHub Actions三元运算符判断异常问题求助
GitHub Actions 三元运算符判断作业输出异常问题
我正在构建包含以下作业的GitHub Actions基础工作流:
- 基础设施部署(Infrastructure Provisioning)
- 应用部署(Application Deployment)
- 状态回调(Status Callback)
我想用三元运算符逻辑决定给Status Callback作业传入的status变量是OK还是NOK,但测试后发现该逻辑表现异常。
测试所用代码(仅status的判断逻辑部分有变化):
Status-Callback-Generic-A: # needs: [Infrastructure_Provisioning, Dummy_Application_Deployment] needs: [Dummy_Application_Deployment] if: ${{ always() }} uses: ./.github/workflows/status-callback.yml with: connectionId: ${{ inputs.connectionId }} status: ${{ needs.Dummy_Application_Deployment.outputs.is_success == 'true' && 'OK' || 'NOK' }}
我测试了五种判断逻辑场景:
场景A
status: ${{ needs.Dummy_Application_Deployment.outputs.is_success == 'true' && 'OK' || 'NOK' }}
场景B
status: ${{ needs.Dummy_Application_Deployment.outputs.is_success && 'OK' || 'NOK' }}
场景C
status: ${{ needs.Dummy_Application_Deployment.outputs.is_success == true && 'OK' || 'NOK' }}
场景D
status: ${{ needs.Dummy_Application_Deployment.outputs.is_success == 1 && 'OK' || 'NOK' }}
场景E
status: ${{ needs.Dummy_Application_Deployment.outputs.is_success == '1' && 'OK' || 'NOK' }}
测试结果如下:
| is_success | expected status | status(A) | status(B) | status(C) | status(D) | status(E) |
|---|---|---|---|---|---|---|
| true | OK | NOK | OK | NOK | NOK | NOK |
| false | NOK | NOK | OK | NOK | NOK | NOK |
根据官方文档说明:
作业输出会被解析为字符串;GitHub会将不匹配的类型转换为数字,布尔值true转1、false转0。
我的条件判断是否存在根本性错误?
is_success的定义来自对应工作流的步骤:
name: Dummy Application Deployment on: workflow_call: outputs: is_success: description: Dummy Description value: ${{ jobs.build_and_deploy_dummy_application.outputs.is_success }} jobs: build_and_deploy_dummy_application: runs-on: ubuntu-latest outputs: is_success: | ${{ steps.failing-step.outcome == 'success' && steps.build-dummy-application.outcome == 'success' && steps.deploy-dummy-application.outcome == 'success' }} steps: # omitted
内容的提问来源于stack exchange,提问作者Nicolas Kilchenmann
相关产品推荐
相关产品推荐

