GitHub 由于 "unsafe repository" 错误无法推送操作

GitHub Action incapable of pushing due to "unsafe repository" error

我有一个私有 GitHub 存储库,它有一个 GitHub 操作,可以将在操作运行时创建的文件推送到存储库。从昨天 (2022-04-12) 开始,Action 在以下步骤失败:

    - name: Push data to repo
      uses: github-actions-x/commit@v2.8
      with:
        push-branch: 'main'
        commit-message: 'Add current data'
        force-add: 'true'
        files: *.zip
        name: autoupdate

运行 此步骤触发以下错误消息:

Command line: | /usr/bin/git checkout -B main
Stderr:       | fatal: unsafe repository ('/github/workspace' is owned by someone else)
              | To add an exception for this directory, call:
              | 
              |     git config --global --add safe.directory /github/workspace

根据错误消息,我将以下内容添加到我的 GitHub 操作中:

    - name: Fix issue with repository ownership
      run: |
        git config --global --add safe.directory /home/runner/work/vksm/vksm
        git config --global --add safe.directory /github/workspace

我还添加了 /home/runner/work/vksm/vksm,因为我不确定错误消息中的 /github/workspace 是否表示通用路径。 /home/runner/work/vksm/vksm 是操作运行时检出步骤放置存储库的位置:/usr/bin/git init /home/runner/work/vksm/vksm

整个步骤顺序如下:

 steps:
    - name: Checkout the repository
      uses: actions/checkout@v2

    - name: Fix issue with repository ownership
      run: |
        git config --global --add safe.directory /home/runner/work/vksm/vksm
        git config --global --add safe.directory /github/workspace

    - name: Set up Python 3.9
      uses: actions/setup-python@v2
      ...

    - name: Install dependencies
      run: |
        pip install requests
        
    - name: Run Python script
      run: |
        python script.py

    - name: Push data to repo
      uses: github-actions-x/commit@v2.8
      ...

但是,还是报错。

这个问题可能与Cannot add parent directory to safe.directory on git有关。

Windows 10

在我的案例中,“不安全的存储库归其他人所有”已通过命令 在提及文件夹

中解决

在命令提示符下使用 takeown 以递归方式获取文件夹及其所有子文件夹和文件的所有权。

takeown.exe /f . /r

这很好用,但如果您不以管理员身份运行您的命令行控制台,它可能无法处理您不拥有的文件。

发生这种情况是因为存在安全漏洞。在执行 git 配置命令修复不安全存储库问题之前,错误会在 docker 容器内抛出。您需要修改 docker 容器的入口点才能执行 git 命令。您可以查看 this link 以了解有关该漏洞的详细信息。

在 git/action 所有者做出更改之前的临时解决方法可能是 fork/clone 使用 docker 的操作并用类似的方式修改它。

#!/bin/bash

set -o pipefail

# config
# ...

# Fix the unsafe repo error which was introduced by the CVE-2022-24765 git patches
git config --global --add safe.directory /github/workspace
#...

您可以查看本期中的 comments,了解有关解决方法的一些想法。

我添加了当前项目的整个路径:

git config --global --add safe.directory '/home/user/AndroidStudioProjects/MyRepoNameInc'

然后执行推送

git commit -m "first commit"

我在使用 GitLab runner 时遇到了这个问题。花了几个小时做每件事。终于在更新 .gtlab-ci.yml .

后开始工作了

文件夹权限如下

/var/www/html/project - www-data:www-data

/var/www/html/projcect/.git - gitlab-runner:www-data

更新脚本如下。

script:
    - git config --global --add safe.directory /var/www/html/phase-3/public-ui