在 github 操作中更新私有子模块时出现身份验证问题
Authentication problem when updating private submodule within github actions
我的仓库包含一个子模块,子模块是私有仓库。
每当发生推送时,都会使用 GitHub actions 执行测试脚本。
当GitHub actions更新子模块时,遇到身份验证问题,无法使用GitHub actions.
访问子模块。
我关注了关于如何对私有存储库进行身份验证的讨论,here and here。
目前,我的主要问题是如何访问和使用上面链接中讨论的个人访问令牌。
一位讨论贡献者使用 secret.GITHUB_PAT
变量,另一位使用 secret.CI_PAT
。
在 this github documentation 之后,可能会有一个 secret.GITHUB_TOKEN
,但我不知道他们是如何创建另外两个的。
-> 都是一样的吗?如何创建这些变量以及如何将正确的 PAT 放入这些变量中?
天真地 运行 来自 Lauszus reply 的代码给了我以下错误。
我的代码
假设 SUBREPO
是子模块,
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout reposistory
uses: actions/checkout@v2
- name: Checkout submodule
run: |
git config --file=.gitmodules SUBREPO.url https://${{ secrets.GITHUB_TOKEN }}:${{ secrets.GITHUB_TOKEN }}@github.com/COMP/SUBREPO.git
git submodule sync
git submodule update --init --recursive
输出
Run git config --file=.gitmodules SUBREPO.url ***github.com/COMP/SUBREPO.git
git config --file=.gitmodules SUBREPO.url ***github.com/COMP/SUBREPO.git
git submodule sync
git submodule update --init --recursive
shell: /bin/bash -e {0}
Submodule 'SUBREPO' (https://github.com/COMP/SUBREPO.git) registered for path 'MYREPO/SUBREPO'
Cloning into '/home/runner/work/MYREPO/MYREPO/MYREPO/SUBREPO'...
fatal: could not read Username for 'https://github.com': No such device or address
fatal: clone of 'https://github.com/COMP/SUBREPO.git' into submodule path '/home/runner/work/MYREPO/MYREPO/MYREPO/SUBREPO' failed
Failed to clone 'MYREPO/SUBREPO'. Retry scheduled
Cloning into '/home/runner/work/MYREPO/MYREPO/MYREPO/SUBREPO'...
fatal: could not read Username for 'https://github.com': No such device or address
fatal: clone of 'https://github.com/COMP/SUBREPO.git' into submodule path '/home/runner/work/MYREPO/MYREPO/MYREPO/SUBREPO' failed
Failed to clone 'MYREPO/SUBREPO' a second time, aborting
Error: Process completed with exit code 1.
我的主要问题是来自 GitHub 的 secrets,可以在存储库的设置中找到,见附图 secret setting。我将我的 PAT 添加为名为 的秘密,因此 GitHub 操作可以通过 ${{ secret. }}
访问它
我进一步更新了我的代码以使用我的 PAT,如下所示,
GitHub 操作的子模块代码部分
uses: actions/checkout@v2.0.0
with:
token: '${{ secrets.<PAT> }}'
repository: <COMP>/<SUBMOD>
path: <relative_path_to_submod>
ref: '<branch>'
工作流输出结束
From https://github.com/<COMP>/<SUBMOD>
* [new branch] <branch> -> origin/<branch>
/usr/bin/git branch --list --remote origin/<branch> origin/<branch>
/usr/bin/git checkout --progress --force -B <branch> refs/remotes/origin/<branch>
Switched to a new branch '<branch>'
Branch '<branch>' set up to track remote branch '<branch>' from 'origin'.
和 是用户和子模块存储库。 指的是您要跟踪的子模块的分支。
我的仓库包含一个子模块,子模块是私有仓库。 每当发生推送时,都会使用 GitHub actions 执行测试脚本。 当GitHub actions更新子模块时,遇到身份验证问题,无法使用GitHub actions.
访问子模块。我关注了关于如何对私有存储库进行身份验证的讨论,here and here。
目前,我的主要问题是如何访问和使用上面链接中讨论的个人访问令牌。
一位讨论贡献者使用 secret.GITHUB_PAT
变量,另一位使用 secret.CI_PAT
。
在 this github documentation 之后,可能会有一个 secret.GITHUB_TOKEN
,但我不知道他们是如何创建另外两个的。
-> 都是一样的吗?如何创建这些变量以及如何将正确的 PAT 放入这些变量中?
天真地 运行 来自 Lauszus reply 的代码给了我以下错误。
我的代码
假设 SUBREPO
是子模块,
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout reposistory
uses: actions/checkout@v2
- name: Checkout submodule
run: |
git config --file=.gitmodules SUBREPO.url https://${{ secrets.GITHUB_TOKEN }}:${{ secrets.GITHUB_TOKEN }}@github.com/COMP/SUBREPO.git
git submodule sync
git submodule update --init --recursive
输出
Run git config --file=.gitmodules SUBREPO.url ***github.com/COMP/SUBREPO.git
git config --file=.gitmodules SUBREPO.url ***github.com/COMP/SUBREPO.git
git submodule sync
git submodule update --init --recursive
shell: /bin/bash -e {0}
Submodule 'SUBREPO' (https://github.com/COMP/SUBREPO.git) registered for path 'MYREPO/SUBREPO'
Cloning into '/home/runner/work/MYREPO/MYREPO/MYREPO/SUBREPO'...
fatal: could not read Username for 'https://github.com': No such device or address
fatal: clone of 'https://github.com/COMP/SUBREPO.git' into submodule path '/home/runner/work/MYREPO/MYREPO/MYREPO/SUBREPO' failed
Failed to clone 'MYREPO/SUBREPO'. Retry scheduled
Cloning into '/home/runner/work/MYREPO/MYREPO/MYREPO/SUBREPO'...
fatal: could not read Username for 'https://github.com': No such device or address
fatal: clone of 'https://github.com/COMP/SUBREPO.git' into submodule path '/home/runner/work/MYREPO/MYREPO/MYREPO/SUBREPO' failed
Failed to clone 'MYREPO/SUBREPO' a second time, aborting
Error: Process completed with exit code 1.
我的主要问题是来自 GitHub 的 secrets,可以在存储库的设置中找到,见附图 secret setting。我将我的 PAT 添加为名为
我进一步更新了我的代码以使用我的 PAT,如下所示,
GitHub 操作的子模块代码部分
uses: actions/checkout@v2.0.0
with:
token: '${{ secrets.<PAT> }}'
repository: <COMP>/<SUBMOD>
path: <relative_path_to_submod>
ref: '<branch>'
工作流输出结束
From https://github.com/<COMP>/<SUBMOD>
* [new branch] <branch> -> origin/<branch>
/usr/bin/git branch --list --remote origin/<branch> origin/<branch>
/usr/bin/git checkout --progress --force -B <branch> refs/remotes/origin/<branch>
Switched to a new branch '<branch>'
Branch '<branch>' set up to track remote branch '<branch>' from 'origin'.