必须使用 github secrets 管理 gemini api 密钥:先在仓库 settings → secrets and variables → actions 中添加 gemini_api_key;再在 workflow yaml 的 step env 中引用 ${{ secrets.gemini_api_key }};最后通过 curl 或 python 安全调用 api,避免硬编码与日志泄露。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望在 GitHub Actions 工作流中安全调用 Gemini API,但又不希望将 API 密钥硬编码在 YAML 文件或仓库代码中,则必须借助 GitHub 的 Secrets 机制进行密钥管理。以下是实现该集成的具体步骤:
一、在 GitHub 仓库中配置 Secrets
GitHub Secrets 提供加密存储空间,仅对工作流运行时解密暴露,确保密钥不会以明文形式出现在日志或代码中。所有 Secrets 均由 GitHub 后端加密保护,且无法被 fork 的仓库继承。
1、进入目标 GitHub 仓库主页,点击右上角 Settings 选项卡。
2、在左侧边栏中,展开 Security 菜单,点击 Secrets and variables → Actions。
3、点击 New repository secret 按钮。
4、在 Name 输入框中填写 GEMINI_API_KEY(名称需全大写、下划线分隔,符合环境变量命名惯例)。
5、在 Value 输入框中粘贴您从 Google AI Studio 获取的 Gemini API 密钥字符串。
6、点击 Add secret 完成保存。
二、在 workflow YAML 中引用 Secrets
GitHub Actions 运行时会将 Secrets 注入为环境变量,需通过 env 上下文显式传递给 job 或 step,不可直接在脚本内联使用 ${{ secrets.XXX }} 表达式执行敏感操作。
1、在仓库根目录创建 .github/workflows/gemini-test.yml 文件。
2、在 jobs 下定义一个 job,例如命名为 call-gemini。
3、在该 job 的 steps 中添加一个 run 步骤,用于执行调用逻辑。
4、在该 step 的 env 字段中,设置 GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}。
5、确保该 step 使用的脚本(如 Python、cURL 或 Node.js)通过 process.env.GEMINI_API_KEY 或 $GEMINI_API_KEY 读取密钥,而非硬编码或命令行参数传入。
三、使用 curl 调用 Gemini API 的最小化示例
为验证 Secrets 是否生效,可编写一个仅发送基础请求的 step,避免引入复杂依赖。该方式不依赖任何语言运行时,直接利用 GitHub Runner 自带的 curl 工具完成 HTTP 请求。
1、在 workflow YAML 的某个 step 中,设置 run 字段内容为以下多行命令(注意使用双引号包裹 JSON,防止 shell 解析错误):
2、执行 curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${{ secrets.GEMINI_API_KEY }}"。
使用固定的 Next.js/Tailwind/Prisma 技术栈构建并记录独立 SaaS 项目,仅将 FastAPI 用于 Python 工作负载,并遵循严格的架构规范。
3、添加 -H "Content-Type: application/json" 指定请求头。
4、使用 -d '{ "contents": [{ "parts": [{ "text": "Hello" }] } ] }' 发送最简请求体。
5、将响应重定向至 /dev/null 或使用 jq 解析,避免密钥意外泄露到日志(若未安装 jq,跳过解析)。
四、使用 Python 脚本调用 Gemini API
当需要更复杂的提示工程、流式响应处理或多轮对话时,Python 是更可控的选择。Secrets 通过环境变量注入后,脚本可安全读取并构造请求。
1、在仓库中新增文件 scripts/call_gemini.py。
2、在脚本开头使用 import os 并通过 os.getenv("GEMINI_API_KEY") 获取密钥值。
3、检查返回值是否为 None,若是则立即退出并打印错误信息,防止空密钥触发公开错误响应。
4、构造 POST 请求 URL,格式为 https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key= 加上密钥值。
5、使用 requests.post() 发送请求,传入 JSON 格式的 contents 字段,其中包含纯文本输入。
6、检查响应状态码是否为 200,若非 200 则打印 response.text 并退出,避免静默失败。
五、限制 Secrets 的作用域与访问权限
默认情况下,repository secrets 对所有 workflow 可见,但可通过环境保护规则或分支策略进一步收紧权限,防止误触发高权限操作。
1、进入 Settings → Secrets and variables → Actions → Environments,点击 New environment 创建名为 production 的环境。
2、在该环境页面中,点击 Add environment secret,再次输入 GEMINI_API_KEY 及其值。
3、编辑 workflow YAML,在对应 job 下添加 environment: production 字段。
4、返回环境设置页,启用 Required reviewers 并添加至少一名 reviewer,使该环境下的 Secrets 仅在人工批准后才可使用。
5、在环境的 Deployment branches 设置中,指定仅允许 main 分支部署,禁止 feature/* 等开发分支触发此 job。










