如果github操作中传递的参数为空,如何保留默认操作输入

问题描述 投票:0回答:1

我有一个工作流程,

workflow_dispatch
输入默认为空字符串。 该工作流程使用本地 github 操作,其自定义输入及其各自的默认值:

# .github/workflow/ci.yml
on:
  push:
    - main
    - wip/**

  workflow_dispatch:
    inputs:
      myInput:
        description: An input string
        type: string

jobs:
  myJob:
    steps:
      - name: My action step
        uses: ./.github/actions/my-action
        with:
          myInput: ${{ github.event.inputs.myInput }}
# .github/actions/my-action/action.yml
name: 'My action'
description: 'An action'
inputs:
  myInput:
    description: An input
    required: false
    default: 'My default input'

runs:
  steps:
    - name: Run
      shell: bash
      run: echo Input: ${{ inputs.myInput }}

如果工作流程是通过推送触发的,或者如果我使用空输入手动启动工作流程,我希望

my-action
操作保留其默认输入值
My default input
而不是空字符串。

知道这是否可以从工作流程中实现,而无需调整

my-action
操作吗?

github github-actions
1个回答
0
投票

我希望

my-action
操作保留其默认输入值
My default input
而不是空字符串。

不幸的是,

default:
仅适用于
workflow_dispatch
。正如您所指出的,由
push
触发的工作流程不遵守它。

解决此问题的一种方法是向

action.yml
添加另一个步骤,即设置一个环境变量,当该变量为空时,该变量默认为提供的值。示例:

# .github/actions/my-action/action.yml
name: 'My action'
description: 'An action'
inputs:
  myInput:
    description: An input
    required: false

runs:
  steps:
    - name: Set environment variables
      run: |
        echo "MY_INPUT=${{ inputs.myInput || 'My default input' }}" >> $GITHUB_ENV

    - name: Run
      shell: bash
      run: echo Input: ${{ env.MY_INPUT }}

    # Or even:
    - name: Run
      shell: bash
      run: echo Input: $MY_INPUT

另一种方法是使用

GITHUB_OUTPUT
(步骤输出或作业输出)来实现类似的结果。

尽管请注意免责声明,但您问:

无需调整 my-action 动作

...这显然会调整操作,但在某种程度上为所有工作流触发器类型设置了默认值。

© www.soinside.com 2019 - 2024. All rights reserved.