You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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字段,用户直接全选删除预填值提交时,平台会判定为「用户未修改输入内容」,自动回填配置的默认值,因此无法拿到空字符串。

实现方案

不需要修改原有预填配置,通过操作小技巧+简单的参数处理步骤即可实现需求:

  1. 保留date_to的default配置,保证打开运行页面时输入框默认显示预填日期,满足显示要求
  2. 在输入描述中增加操作提示:需要传空时,先在输入框中任意输入一个字符(比如英文单引号),再全选删除所有内容后提交,此时平台会判定为用户主动修改过输入,传递空字符串而非默认值
  3. 在业务步骤前新增参数处理逻辑,兼容空值场景,调整后的完整配置如下:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 22:57:26