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
我有一个私有 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