如何检查是否设置了可选的workflow_dispatch输入

kit*_*kun 15 github-actions

我有一个输入定义为

  workflow_dispatch:
    inputs:
      level:
        description: 'level to process'
        type: number
        required: false
Run Code Online (Sandbox Code Playgroud)

我想在步骤中运行命名操作,具体取决于值是否已设置,但我不知道如何

这可能有效:

  if: ${{ github.event.inputs.level}}
Run Code Online (Sandbox Code Playgroud)

但我找不到相反的版本,这是无效的:

  if: !${{ github.event.inputs.level}}
Run Code Online (Sandbox Code Playgroud)

Gui*_*urd 31

我已经在此工作流程中对其进行了测试,检查 IF 条件中的输入(或任何变量)是否为空的正确方法是使用以下语法:

if: "${{ github.event.inputs.<INPUT_NAME> != '' }}"
Run Code Online (Sandbox Code Playgroud)

注意:使用!= ""会破坏工作流程,因为解释器不接受表达式中的此符号。

因此,您的工作流程将如下所示:

on:
  workflow_dispatch:
    inputs:
      level:
        description: 'level to process'
        type: number
        required: false

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Print variable if not empty
        if: "${{ github.event.inputs.level != '' }}"
        run: echo Level value is ${{ github.event.inputs.level }}

      - name: Print message if empty
        if: "${{ github.event.inputs.level == '' }}"
        run: echo Level value is empty
Run Code Online (Sandbox Code Playgroud)

如果您想检查的话,我在这里做了两个测试(链接可能会导致随着时间的推移找不到页面):

  • 布尔输入怎么样? (3认同)
  • 是的。这并没有改变我们希望在可用时使用提供的值的事实。如果提供的值为 false 并且默认为 true,则 ${{inputs.mybool || true }} 无论输入值是否为 false,都会返回 true。现在,我已经到达了`${{inputs.value&gt;''&amp;&amp;inputs.value || 我的默认值` (2认同)