如何在GitHub Actions中创建条件式选择输入?
GitHub Actions实现依赖式选择输入的方案
GitHub Actions的workflow_dispatch原生不支持基于前置选择动态更新后续选项的功能——工作流文件是静态定义的,触发时的输入选项在触发前就已固定,无法根据用户的实时选择动态变更。不过可以通过以下替代方案实现类似需求:
方案1:输入校验+条件执行
把所有可能的选项都列出来,在工作流运行时校验用户选择是否符合依赖关系,不符合则直接报错终止:
name: Test GitHub Workflow Options on: workflow_dispatch: inputs: letter: description: 'Letter Choice' required: true type: choice options: - "A" - "B" number: description: 'Number Choice (A对应1/2,B对应3/4)' required: true type: choice options: - "1" - "2" - "3" - "4" jobs: validate-input: runs-on: ubuntu-latest steps: - name: 校验数字选择与字母匹配 if: | (inputs.letter == 'A' && !contains(['1','2'], inputs.number)) || (inputs.letter == 'B' && !contains(['3','4'], inputs.number)) run: | echo "错误:数字选择与所选字母不匹配" exit 1 main-task: runs-on: ubuntu-latest needs: validate-input steps: - name: 根据选择执行任务 run: | echo "已选择字母:${{ inputs.letter }},数字:${{ inputs.number }}" # 这里添加你的业务逻辑
方案2:分阶段触发+参数传递
通过两次手动触发工作流,结合存储参数实现依赖选择:
- 第一个工作流仅提供字母选择,触发后将选择结果存储到GitHub环境变量或仓库文件中(可借助
actions/github-script完成); - 第二个工作流读取存储的字母参数,在运行阶段根据该参数执行对应逻辑;若仍需用户选择数字,可通过Issue评论、Discussions或外部工具收集输入后继续执行。
这个方案适合需要严格依赖选择的场景,但操作流程相对繁琐。
内容的提问来源于stack exchange,提问作者Ducati Scotty
相关产品推荐
相关产品推荐

