如何在GitHub Actions工作流中创建可动态填充的下拉选择框
实现GitHub Actions动态下拉参数选择的方案
核心逻辑
将工作流拆分为两个串行作业,第一阶段执行自定义脚本生成参数合法取值,把输出注入到后续手动确认步骤的下拉选项中,用户完成选择后再运行第二阶段的正式业务作业。
具体实现步骤
1. 提前配置仓库环境
进入GitHub仓库的Settings->Environments页面,新建一个名为dynamic-param-env的环境,做以下配置:
- 开启
Required reviewers,添加允许选择参数的用户/团队 - 开启
Required reviewers can provide inputs,预留两个选择类型的输入项位置
2. 编写工作流配置文件
在仓库的.github/workflows/目录下新建工作流yaml文件,参考配置如下:
name: 带动态参数选择的工作流 on: # 可根据你的需求替换为其他触发规则,比如定时触发、代码推送触发 workflow_dispatch: jobs: # 第一阶段作业:生成动态参数选项 gen-dynamic-options: runs-on: ubuntu-latest outputs: param1-opts: ${{ steps.gen.outputs.param1 }} param2-opts: ${{ steps.gen.outputs.param2 }} steps: - uses: actions/checkout@v4 - name: 执行自定义脚本生成参数合法值 id: gen run: | # 替换为你自己的参数生成脚本,输出必须为JSON数组格式,例如 ["选项A","选项B","选项C"] PARAM1_VALUES=$(python3 ./scripts/gen_param1_options.py) PARAM2_VALUES=$(python3 ./scripts/gen_param2_options.py) # 将生成的选项写入作业输出 echo "param1=$PARAM1_VALUES" >> $GITHUB_OUTPUT echo "param2=$PARAM2_VALUES" >> $GITHUB_OUTPUT # 第二阶段作业:用户选参后执行业务逻辑 run-official-job: needs: gen-dynamic-options runs-on: ubuntu-latest # 关联提前配置好的带参审批环境 environment: name: dynamic-param-env # 把第一阶段生成的选项注入到环境的下拉选择框中 inputs: selected_param1: type: choice options: ${{ needs.gen-dynamic-options.outputs.param1-opts }} selected_param2: type: choice options: ${{ needs.gen-dynamic-options.outputs.param2-opts }} steps: - name: 执行业务逻辑(示例为打印选中参数) run: | echo "用户选中的第一个参数为:${{ github.event.inputs.selected_param1 }}" echo "用户选中的第二个参数为:${{ github.event.inputs.selected_param2 }}" # 这里替换为你实际的业务执行代码
常见问题说明
- 你的参数生成脚本必须输出标准JSON数组,不能有多余的转义字符、换行,否则会导致下拉选项解析失败
- 如果不需要权限管控,只保留选参功能,可以把环境的审批者设置为所有需要操作工作流的用户即可
- 如果触发方式为自动触发(比如定时),第一阶段作业会自动运行,生成最新选项后暂停等待用户选参,完全不需要硬编码修改参数选项
内容的提问来源于stack exchange,提问作者Avba
相关产品推荐
相关产品推荐

