Python用os.environ.get 无法获取 GitHub Actions 的 secrets

如果你在使用 os.environ.get 无法获取 GitHub Actions 的 secrets,可能是以下原因之一导致的:

1. Secrets 未正确配置

确保你已经在 GitHub 仓库的 Settings > Secrets and variables > Actions 中正确添加了所需的 secrets。
确保你在工作流文件(.yml)中正确引用了这些 secrets,例如:

1
2
env:
MY_SECRET: ${{ secrets.MY_SECRET }}

2. 环境变量未传递到脚本

如果你在脚本中使用 os.environ.get,需要确保工作流中将 secrets 映射为环境变量。例如:

1
2
3
4
5
6
7
8
9
10
jobs:
example-job:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Run script
env:
MY_SECRET: ${{ secrets.MY_SECRET }}
run: python script.py

在脚本中,你可以通过以下方式获取:

1
2
3
import os
my_secret = os.environ.get("MY_SECRET")
print(my_secret)

3. Secrets 名称拼写错误

检查 secrets 的名称是否拼写正确,名称区分大小写。例如,MY_SECRET 和 my_secret 是不同的。

4. 权限问题

如果你在 Fork 仓库中运行工作流,默认情况下 secrets 不会传递到 Fork 仓库的 Actions 中。需要在工作流触发时手动启用 secrets。

5. Secrets 不会暴露给 PR

如果工作流是由外部 Pull Request 触发的,GitHub 出于安全考虑不会将 secrets 暴露给工作流。
解决方法
调试环境变量:在工作流中打印所有环境变量,检查是否正确传递:
复制代码

1
2
- name: Debug environment variables
run: env

确保正确使用 os.environ.get:如果环境变量未设置,os.environ.get 会返回 None,可以添加默认值以便调试:
复制代码

1
2
my_secret = os.environ.get("MY_SECRET", "default_value")
print(my_secret)

如果问题仍未解决,可以提供更多上下文,我会尽力帮你进一步排查!
搜索越来越智能了,直接给出了答案。
Bing给的答案