You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions工作流中向setup.py传递仓库密钥?

解决GitHub Actions中传递密钥给setup.py的问题

可行方案:通过可重用工作流的secrets传递+环境变量注入

1. 调用方工作流配置

在调用可重用工作流时,显式传递需要的密钥,不要通过with参数传递敏感信息:

jobs:
  build-and-deploy:
    uses: org/workflows/.github/workflows/build.yml@v1.0.1
    secrets:
      SERVICE_TOKEN: ${{ secrets.token }}
    with:
      setup: setup.py

2. 被调用的build.yml配置

在可重用工作流中,先定义接收的secret,然后在执行setup.py的步骤中将其注入为环境变量:

on:
  workflow_call:
    inputs:
      setup:
        type: string
        required: true
    secrets:
      SERVICE_TOKEN:
        required: true

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: 检出代码
        uses: actions/checkout@v4

      - name: 执行setup脚本
        env:
          SERVICE_TOKEN: ${{ secrets.SERVICE_TOKEN }}
        run: ${{ inputs.setup }}

3. setup.py中读取token

在Python脚本中通过环境变量获取:

import os

token = os.environ.get("SERVICE_TOKEN")
if not token:
    raise ValueError("未获取到认证token")
# 后续使用token进行认证操作

为什么之前的方法失败?

  • 方法1:GitHub禁止在可重用工作流的with参数中直接引用secrets,因为with的输入属于工作流的公开配置,存在泄露敏感信息的风险,因此解析时直接报错。
  • 方法2:Job outputs会被GitHub自动检测,若内容包含密钥等敏感信息,会被直接跳过设置,目的是防止敏感数据通过公开的job输出泄露。
  • 方法3:secrets: inherit确实会将调用方的密钥传递给可重用工作流,但如果可重用工作流没有在执行setup.py的步骤中主动将密钥注入环境变量,脚本自然无法读取到。

内容的提问来源于stack exchange,提问作者Raphael Grimm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 16:04:55