我有一个工作流程,
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
操作吗?
我希望
操作保留其默认输入值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 动作
...这显然会调整操作,但在某种程度上为所有工作流触发器类型设置了默认值。