GitHub Action workflow_dispatch清空输入仍返回默认值解决方法
问题描述
- 需要在
workflow_dispatch配置中添加名为date_to的输入项,设置占位预填值为'2022-05-05T00:00:00.000',支持用户删除预填值后直接运行工作流,预期该输入取值为空字符串,但实际运行时始终返回预设的占位值。 - 原始工作流配置如下:
name: Total hour on: workflow_dispatch: inputs: date_from: description: 'Start date' required: true default: '2022-05-01T00:00:00.000' date_to: description: 'End date' required: false default: '2022-05-05T00:00:00.000' jobs: total_hour: runs-on: ubuntu-18.04 timeout-minutes: 5 name: Business hour steps: - uses: actions/checkout@v2 - name: Info run: | echo "Start date : ${{ github.event.inputs.date_from }}" echo "end date : ${{ github.event.inputs.date_to }}"
- 当前实际运行输出:
Start date : 2022-05-01T00:00:00.000 end date : 2022-05-05T00:00:00.000
- 预期目标:保留输入框占位预填值的显示效果,用户清空输入后得到如下输出:
Start date : 2022-05-01T00:00:00.000 end date :
问题原因
GitHub Actions的workflow_dispatch输入项存在默认回退逻辑:只要配置了default字段,用户直接全选删除预填值提交时,平台会判定为「用户未修改输入内容」,自动回填配置的默认值,因此无法拿到空字符串。
实现方案
不需要修改原有预填配置,通过操作小技巧+简单的参数处理步骤即可实现需求:
- 保留
date_to的default配置,保证打开运行页面时输入框默认显示预填日期,满足显示要求 - 在输入描述中增加操作提示:需要传空时,先在输入框中任意输入一个字符(比如英文单引号),再全选删除所有内容后提交,此时平台会判定为用户主动修改过输入,传递空字符串而非默认值
- 在业务步骤前新增参数处理逻辑,兼容空值场景,调整后的完整配置如下:
name: Total hour on: workflow_dispatch: inputs: date_from: description: 'Start date' required: true default: '2022-05-01T00:00:00.000' date_to: description: 'End date(需传空请先任意输入1个字符再全删提交)' required: false default: '2022-05-05T00:00:00.000' jobs: total_hour: runs-on: ubuntu-18.04 timeout-minutes: 5 name: Business hour steps: - uses: actions/checkout@v2 - name: 处理输入参数 id: params run: | DATE_TO_INPUT="${{ github.event.inputs.date_to }}" if [ -z "$DATE_TO_INPUT" ]; then echo "processed_date_to=" >> $GITHUB_OUTPUT else echo "processed_date_to=$DATE_TO_INPUT" >> $GITHUB_OUTPUT fi - name: Info run: | echo "Start date : ${{ github.event.inputs.date_from }}" echo "end date : ${{ steps.params.outputs.processed_date_to }}"
使用上述配置后:
- 用户直接打开运行页不修改任何内容提交,
date_to取值为预填的2022-05-05T00:00:00.000 - 用户按照提示先输入任意字符再全删提交,
date_to取值为空字符串,符合预期输出要求。
注:该方案利用了GitHub Actions对输入项的修改判定规则,不需要引入第三方动作,兼容现有所有runner版本。
内容的提问来源于stack exchange,提问作者TSR
相关产品推荐
相关产品推荐

