git - 如何在 GitHub 操作中签出子模块?
问题描述
我有一个带有子模块的存储库,当我推送到某些分支或标签时,我正在创建一个构建。我遇到的问题是我的结帐步骤无法访问我的子模块。设置是:
- 这两个存储库都在 GitHub 上。
- 我是两个存储库的所有者。
- 这两个存储库都是私有的。
- 存储库只能通过 ssh(禁用 https)访问。
我尝试使用 GitHub Actionactions/checkout@v2
无济于事。如下所示,我尝试使用“ssh-key”选项,其中我将公钥添加到子模块存储库部署密钥,并将私钥添加到运行操作的存储库的秘密。我收到以下错误消息:
Fetching the repository
/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin __myrepo__
ERROR: Repository not found.
Error: fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
The process '/usr/bin/git' failed with exit code 128
Waiting 13 seconds before trying again
/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin __myrepo__
ERROR: Repository not found.
Error: fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
The process '/usr/bin/git' failed with exit code 128
Waiting 19 seconds before trying again
/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin __myrepo__
ERROR: Repository not found.
Error: fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Error: The process '/usr/bin/git' failed with exit code 128
我已经尝试过使用和不使用ssh-key
以及使用true
和recursive
选项 on submodules
。子模块的目标位于名为src
. 我的工作流程中的结帐步骤如下:
Step-01:
runs-on: ubuntu-18.04
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
submodules: 'true'
ssh-key: ${{ secrets.PRIVATE_KEY_FOR_DEPLOY_KEY_IN_SUBMODULE }}
.gitmodules 是:
[submodule "name"]
path = src/name
url = git@github.com:user/repository.git
branch = master
我对 GitHub Actions(整体 CI/CD)非常陌生,并且对子模块不太熟悉,所以我很可能犯了一些基本错误。
解决方案
我终于让它工作了,完全感谢这个。
为了澄清 SAML SSO 被强制执行的情况。因此,我没有使用 SSH 尝试访问子模块,而是使用了 SSO 已授权的个人访问令牌 (PAT)。
我做了什么:
- 我在帐户设置中生成了 PAT。
- 我启用了 SSO 并对其进行了授权。
- 我在存储库(想要访问子模块)秘密中添加了令牌。
- 我将工作流程更新为以下内容(只需更改 ssh-key 行)。
Step-01:
runs-on: ubuntu-18.04
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
submodules: 'true'
token: ${{ secrets.PAT_TOKEN }}
推荐阅读
- twitter - ffmpeg 转换:Twitter 拒绝带有“无效视频”的视频
- excel - Excel VBA - 从没有最后一列的表中复制行
- azure - 模板输出评估已跳过
- mysql - mysql node js - 连接失败不继续执行下一条语句,退出代码
- javascript - 如何在标题标题中随机播放字符,就像它正在破译一样?
- scikit-learn - OneHotEncoder ValueError:发现未知类别
- docker - Docker TLS - 如何在本地机器上创建密钥
- c# - 具有多个计数的 LINQ 表达式
- redis - 如何通过 Redis 中的另一个排序集更新排序集?
- javascript - 根据 PowerShell 的命令在 Firefox 中执行 JavaScript