GitHub Actions运行Python脚本生成目录摘要时权限异常问题
问题原因及解决方案
核心差异来源
- 工作目录不一致:本地运行脚本时,你大概率是在仓库根目录执行,所以
Summary.md会生成在根目录;但GitHub Actions的Workflow中,若脚本执行环节的当前工作目录被切换到了.github/workflows(比如部分Workflow步骤默认在此目录执行,或你手动用cd命令切换过),脚本里用相对路径创建文件时,就会把Summary.md生成在这个目录下。 - 权限限制不同:本地用个人GitHub账号操作,拥有仓库完整权限;而GitHub Actions默认的
GITHUB_TOKEN没有.github/workflows目录的写入权限,所以尝试推送该目录下的文件时会失败。
修复方案
- 强制指定生成路径:修改Python脚本,用仓库根目录的绝对路径生成文件。GitHub Actions会自动设置
GITHUB_WORKSPACE环境变量指向仓库根目录,代码示例:import os repo_root = os.environ.get("GITHUB_WORKSPACE", os.getcwd()) summary_path = os.path.join(repo_root, "Summary.md") with open(summary_path, "w") as f: # 写入目录摘要逻辑 f.write("目录摘要内容") - 固定Workflow工作目录:在执行脚本的步骤前,明确切换到仓库根目录,比如在Workflow的run命令中添加:
- name: 运行生成脚本 run: | cd $GITHUB_WORKSPACE python your_script.py - (不推荐)调整权限:若确实需要在
.github/workflows目录生成文件,需在Workflow中配置GITHUB_TOKEN的权限:jobs: your_job_name: permissions: contents: write workflows: write steps: # 后续执行步骤
内容的提问来源于stack exchange,提问作者Diego Borba
相关产品推荐
相关产品推荐

