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
相关产品推荐
相关产品推荐

