如何在GitHub Actions的workflow_dispatch中用变量设置choice选项?
能否用变量设置workflow_dispatch中choice类型输入的options参数?
不行,你提供的写法不可行。
GitHub Actions在解析工作流的on配置段时,处于触发工作流的前置阶段,此时无法解析${{ vars.all_suites }}这类表达式来动态生成choice的options选项。workflow_dispatch的输入定义必须是静态的,options需要在工作流文件里直接写死具体的选项值。
替代方案
- 改用string类型输入+运行时校验:如果需要动态选择测试套件,可以把输入类型改成string,然后在工作流运行时通过脚本校验输入值是否在允许的列表中(从vars或环境变量读取合法值),不符合就终止工作流并提示错误。示例代码:
on: workflow_dispatch: inputs: suites: type: string description: 输入测试套件名称(可选值参考仓库变量all_suites) required: true jobs: test: runs-on: ubuntu-latest steps: - name: 校验测试套件合法性 run: | ALL_SUITES="${{ vars.all_suites }}" if ! echo "$ALL_SUITES" | grep -wq "${{ inputs.suites }}"; then echo "错误:输入的测试套件不在允许列表中,允许值为:$ALL_SUITES" exit 1 fi # 后续执行测试的步骤
- 动态生成工作流文件:如果一定要保留下拉选择的交互体验,可以通过另一个工作流提前生成包含静态options的目标工作流文件并提交到仓库,这样用户触发时就能看到下拉选项。不过这种方式需要维护额外的工作流,适合选项不频繁变动的场景。
内容的提问来源于stack exchange,提问作者KatKibo
相关产品推荐
相关产品推荐

