GitHub Actions 手动运行工作流怎样传入参数
我第一次把部署工作流交给同事手动运行时,最容易出错的不是 YAML 缩进,而是“参数到底从哪里进来”。GitHub Actions 的做法是:在 workflow_dispatch 下声明 inputs,网页端的 Run workflow 表单会据此生成输入框;工作流运行后,再从 inputs 上下文读取值。
官方地址:https://docs.github.com/en/actions/how-tos/manage-workflow-runs/manually-run-a-workflow
下面用一个手动部署场景说明版本号、目标环境和是否执行部署三个参数。配图是原创操作说明图,用来解释页面层级和字段关系,不是 GitHub 实际运行截图。
一、先把工作流改成可手动运行
先在仓库的工作流目录准备一个 YAML 文件,例如 .github/workflows/deploy.yml。触发器写成 workflow_dispatch 后,GitHub 才会为它提供手动运行入口;工作流文件还需要存在于默认分支,网页端才会显示 Run workflow。
name: Manual deploy
on:
# 只有声明这个事件,Actions 页面才会提供手动运行入口
workflow_dispatch:
inputs:
release_tag:
description: "要部署的版本标签"
required: true
type: string
target_env:
description: "部署目标环境"
required: true
type: choice
options:
- staging
- production
perform_deploy:
description: "是否真正执行部署"
required: true
default: false
type: boolean
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# 先打印非敏感参数,方便确认本次运行拿到的值
- name: Show inputs
run: |
echo "tag=${{ inputs.release_tag }}"
echo "environment=${{ inputs.target_env }}"
echo "perform_deploy=${{ inputs.perform_deploy }}"
这里的 inputs 是输入定义区,不是 job 参数。required 控制是否必须填写,default 提供初始值,type 决定网页表单如何呈现。choice 适合固定环境,能减少手动输入拼写错误。

二、把输入字段和任务条件对齐
声明字段后,不要只在第一步 echo。真正的部署任务应当把输入用于环境选择、版本选择或条件判断。例如只有用户把 perform_deploy 设为 true 时,部署步骤才继续:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Prepare release
run: |
# 用输入值组成当前任务的非敏感上下文
echo "准备 ${{ inputs.release_tag }} -> ${{ inputs.target_env }}"
- name: Deploy to target
if: ${{ inputs.perform_deploy }}
run: |
# 真正的部署命令放在条件步骤中,避免误操作
./scripts/deploy.sh "${{ inputs.release_tag }}" "${{ inputs.target_env }}"
这一步的关键是让“表单字段”和“执行条件”一一对应:版本号进入部署脚本,环境值决定目标,布尔值只负责是否继续。不要把 Token 或密码当作普通输入展示,敏感信息应使用 GitHub Secrets。
三、网页端手动运行并填写参数
提交到默认分支后,打开仓库的 Actions,在左侧选择对应工作流,点击 Run workflow。先选择 Branch,再填写 Release tag、Target environment 和 Perform deploy,最后提交。
如果看不到 Run workflow,先排查三件事:文件是否位于默认分支、顶层事件是否确实是 workflow_dispatch、当前账号是否有运行工作流所需的写权限。不要先改 inputs 名称,因为入口缺失通常发生在触发器或分支位置。

四、也可以用 gh CLI 传入参数
熟悉命令行时,可以用 GitHub CLI 运行同一个工作流。-f 适合直接传入键值,工作流名可以写文件名;下面的命令仍然只传非敏感示例参数:
# -f 使用 key=value 传入 workflow_dispatch 的字段 gh workflow run deploy.yml \ --ref main \ -f release_tag=v2.4.0 \ -f target_env=staging \ -f perform_deploy=false
GitHub CLI 也支持交互式选择,或者用 JSON 标准输入一次传入多个字段。需要注意:CLI 的字段名必须和 YAML 中的 input ID 完全一致,--ref 只是选择运行分支,不会替代工作流输入。
常见问题
为什么网页端没有 Run workflow 按钮?
确认工作流文件在默认分支,并且顶层配置使用了 workflow_dispatch。另外还要确认账号具备运行工作流的权限。
inputs 和 github.event.inputs 有什么区别?
两者都能访问手动输入;官方文档说明 inputs 上下文会保留布尔值的布尔类型,而 github.event.inputs 中的值会转成字符串。条件判断优先使用 inputs.perform_deploy,更符合字段类型。
最多能声明多少个输入字段?
官方工作流语法对 workflow_dispatch 的顶层 inputs 数量和 payload 大小都有上限。字段较多时,应把稳定配置放进仓库文件或环境配置,不要把手动表单做成完整配置中心。
把流程记成四个动作就够了:默认分支提供入口,workflow_dispatch.inputs 定义表单,网页或 CLI 负责传值,任务从 inputs 上下文读取并做条件控制。这样手动运行既保留了人工选择,又不会让参数在工作流各处失去边界。
VS Code 多根工作区怎样分别管理扩展推荐
- 上一篇
- VS Code 多根工作区怎样分别管理扩展推荐
- 下一篇
- VS Code 调试配置怎样传递环境变量
-
- 文章 · 软件教程 | 27分钟前 |
- Git rerere 怎样复用重复冲突的解决结果
- 438浏览 收藏
-
- 文章 · 软件教程 | 33分钟前 | docker · 容器编排 Docker Compose Profiles depends_on
- Docker Compose profiles 依赖服务分属不同 profile 时的启动配置
- 423浏览 收藏
-
- 文章 · 软件教程 | 48分钟前 |
- Docker BuildKit 怎样复用构建缓存
- 148浏览 收藏
-
- 文章 · 软件教程 | 49分钟前 |
- GitHub Copilot CLI 怎样在终端查看 PR
- 176浏览 收藏
-
- 文章 · 软件教程 | 56分钟前 |
- GitHub Actions 怎样缓存 Go 模块
- 470浏览 收藏
-
- 文章 · 软件教程 | 58分钟前 |
- VS Code 调试配置怎样传递环境变量
- 474浏览 收藏
-
- 文章 · 软件教程 | 1小时前 | 开发工具 · vs code · VS Code extensions.json 多根工作区 扩展推荐
- VS Code 多根工作区怎样分别管理扩展推荐
- 228浏览 收藏
-
- 文章 · 软件教程 | 13小时前 |
- OBS怎样把麦克风与桌面声音录到不同音轨
- 174浏览 收藏
-
- 文章 · 软件教程 | 13小时前 | Audacity 标签轨 拆分音频 Multiple Files Export Audio
- Audacity怎样用标签轨拆分自录音频
- 314浏览 收藏
-
- 文章 · 软件教程 | 13小时前 | QGIS 矢量要素 导出选中要素 GeoPackage
- QGIS怎样只导出选中的矢量要素
- 161浏览 收藏
-
- 文章 · 软件教程 | 13小时前 |
- GIMP图层蒙版与直接擦除像素有什么区别
- 158浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 467次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 529次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 548次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 497次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 317次使用
-
- 基于golang的轻量级工作流框架Fastflow
- 2022-12-30 314浏览
-
- Go 项目用 GitHub Actions 自托管 runner:版本强制执行前该怎么整理 CI
- 2026-07-09 340浏览
-
- Go 工具链自动升级值得开吗:GOTOOLCHAIN、go 指令与 CI 可复现性的取舍
- 2026-07-26 316浏览
-
- Go 项目怎么在 CI 里固定工具链:GOTOOLCHAIN、go.mod 与版本矩阵
- 2026-08-12 488浏览
-
- Go 1.27 响应文件怎么传给编译工具:@file 语法与 CI 参数治理
- 2026-09-01 377浏览

