GitHub 操作中奇怪的布尔计算

Bee*_*ope 3 github-actions

我正在尝试理解 GitHub 操作中的布尔表达式。该手册给出了以下不同类型文字的示例${{ false }},包括布尔值 as和${{ true }}

按照他们的指导,我使用以下步骤,将一个env部分设置VARF为 false 和VARTtrue,然后在run密钥中有一些测试输出:

  - name: Var test
    env:
      VARF: ${{ false }}
      VART: ${{ true }}
    run: |
      echo "VART=${{ env.VARF }}"
      echo "VART=${{ env.VART }}"
      echo "VARF && VART=${{ env.VARF && env.VART }}"
      echo "VARF || VART=${{ env.VARF || env.VART }}"
      echo "!VARF=${{ ! env.VARF }}"
      echo "!!VART=${{ !! env.VART }}"
Run Code Online (Sandbox Code Playgroud)

输出如下

VART=false
VART=true
VARF && VART=true
VARF || VART=false
!VARF=false
!!VART=true
Run Code Online (Sandbox Code Playgroud)

纯输出如预期,显示truefalse&&和运算符的输出||与预期相反,给出false && true == truefalse || true == false${{ ! env.VARF }}当我期望为真时,的输出为假。

这里发生了什么?环境上下文中的变量可能被强制转换为字符串,但这仍然不能解释所有结果。

小智 5

输入上下文(dispatch_workflow 与workflow_call)和 GitHub Actions 处理布尔值的方式之间存在一些不一致。我对此有一篇简短的文章。希望您觉得这有帮助

GitHub Actions:将布尔输入变量传递给可重用的workflow_call

  • 真是一团糟.... (4认同)