GitHub工作流执行时遭遇可疑所有权问题,按提示处理后仍无法解决的求助
GitHub工作流执行时遭遇可疑所有权问题,按提示处理后仍无法解决的求助
我明白你遇到的这个问题有多头疼——明明按照错误提示加了safe.directory配置,可GitHub Action还是报可疑所有权的错。让我帮你分析下可能的问题点,再给你几个实测有效的调整方案:
问题根源分析
你在docs/build/html目录下重新初始化了一个新Git仓库,但你之前设置的safe.directory是针对原仓库的路径,而这个新初始化的仓库也会触发Git的所有权检查,尤其是在GitHub Action的容器环境里,用户权限和仓库目录所有权不匹配的情况很常见。
另外,你设置safe.directory的时机也有点早——是在创建新仓库之前执行的,对后续新生成的仓库可能不生效。
方案一:针对新初始化的仓库单独设置safe目录
把Mark repo as safe的逻辑移到初始化新仓库之后,并且直接针对当前新仓库的路径设置:
# ... 前面的Checkout、Python环境配置、文档构建步骤保持不变 ... - name: Init new repo in dist folder and commit run: | mkdir -p docs/build/html/ cd docs/build/html/ git init # 在这里给当前新仓库设置safe目录 git config --global --add safe.directory "$PWD" touch .nojekyll git add -A git config --local user.email "action@github.com" git config --local user.name "GitHub Action" git commit -m 'deploy' # ... 后面的push步骤保持不变 ...
方案二:全局信任所有目录(适合CI环境快速解决)
如果上面的方法还不行,可以直接让Git信任所有目录,彻底绕过这个检查(毕竟CI环境是临时的,安全风险可控):
# 在Checkout步骤之后就添加这个全局配置 - name: Checkout uses: actions/checkout@v2.3.4 - name: Trust all Git directories globally run: git config --global --add safe.directory '*'
方案三:换用更适配的部署工具
你用的ad-m/github-push-action v0.5.0版本比较旧,对新的Git权限检查适配不足。可以换成官方维护的peaceiris/actions-gh-pages,这个工具已经内置处理了所有权问题,配置更简洁:
# 替换原来的Force push步骤 - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./docs/build/html publish_branch: gh-pages force_orphan: true
额外小提示
- 尽量使用环境变量替代硬编码路径,比如用
$GITHUB_WORKSPACE/docs/build/html而不是/github/workspace/docs/build/html,避免不同环境下路径不一致的问题。 - 可以在出现问题的步骤前加一个调试命令,查看目录所有权:
- name: Debug directory ownership run: ls -ld "$GITHUB_WORKSPACE/docs/build/html"
内容来源于stack exchange
相关产品推荐
相关产品推荐

