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

Schedule触发带输入参数的GitHub Action工作流无法读取默认值问题

问题根因

workflow_dispatch 事件下定义的 inputs 配置,仅在手动触发工作流时会被加载,schedule 定时触发、其他事件触发工作流时,GitHub Actions 不会主动读取该配置块下的默认值,直接读取github.event.inputs相关字段会得到空值。
原配置中写在workflow_dispatch下的branches字段是无效配置,workflow_dispatch事件本身不支持分支过滤规则,该配置不会生效。

调整方案

方法1:表达式兜底(最简写法)

直接在所有需要读取typeOfTesting参数的位置,用GitHub Actions表达式加默认值兜底,不需要额外加步骤:

# 所有用到该参数的位置,统一用该写法即可
${{ github.event.inputs.typeOfTesting || 'stage-test-local-All' }}

手动触发时,表达式会优先读取用户选择的输入值(包含workflow_dispatch里配置的默认值);定时触发时inputs为空,会自动使用后面写的默认字符串,两种场景都能正常拿到参数。

方法2:全局变量+步骤统一赋值(适合参数多的场景)

如果工作流里多处用到该参数,建议全局定义默认值,单独用一个步骤统一处理参数赋值,后续步骤直接引用步骤输出即可,方便后续维护。
完整修正后的配置参考:

name: WebDriverIO Automation
on:
  workflow_dispatch:
    inputs:
        typeOfTesting:
          type: choice
          description: Select Type of Test
          default: 'stage-test-local-All'
          required: true
          options: 
          - stage-test-local-All
          - stage-test
          - stage-test-local-Sanity
          - prod-test
  schedule:
    - cron: "*/5 * * * *"

env:
  # 全局统一维护默认测试类型
  DEFAULT_TEST_TYPE: 'stage-test-local-All'

jobs:
  webdriverio-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        # 定时触发默认拉取仓库默认分支,这里指定定时任务跑workingBranch分支,替代原来无效的branches配置
        with:
          ref: ${{ github.event_name == 'schedule' && 'workingBranch' || github.ref }}

      - name: Init test parameters
        id: test-param
        run: |
          if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
            CURRENT_TEST_TYPE="${{ github.event.inputs.typeOfTesting }}"
          else
            CURRENT_TEST_TYPE="${{ env.DEFAULT_TEST_TYPE }}"
          fi
          echo "test_type=$CURRENT_TEST_TYPE" >> $GITHUB_OUTPUT

      # 后续步骤通过 ${{ steps.test-param.outputs.test_type }} 即可拿到正确的参数值
      - name: Run WebDriverIO test
        run: echo "Start running test: ${{ steps.test-param.outputs.test_type }}"
补充说明

schedule定时触发默认只会运行仓库默认分支上的工作流配置,如果需要定时触发其他分支的任务,要么把工作流合并到默认分支,要么在checkout步骤通过ref参数指定要拉取的分支。

内容的提问来源于stack exchange,提问作者user19089852

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:57:33