gitlab - Gitlab-runner 无法使用 ssh-agent 初始化子模块
问题描述
我正在尝试使用 shell 执行器为我的项目(baseProject)配置 gitlab-runner。我的项目有两个子模块:submoduleOne 和 submoduleTwo。这就是我的.gitmodules
样子:
[submodule "lib/submoduleOne"]
path = lib/submoduleOne
url = ../submoduleOne.git
[submodule "third_party/submoduleTwo"]
path = third_party/submoduleTwo
url = ../submoduleTwo.git
这就是我的相关部分的.gitlab-ci.yml
样子:
stages:
- preparation
clean:
stage: preparation
script:
- eval $(ssh-agent -s)
- ssh-add ~/.ssh/submoduleOne
- ssh-add -l
- git submodule update --init -- lib/submoduleOne
- ssh-add -D
- ssh-add ~/.ssh/submoduleTwo
- ssh-add -l
- git submodule update --init -- third_party/submoduleTwo
- ./setup_project.sh
公钥~/.ssh/submoduleTwo
并~/.ssh/submoduleOne
作为“部署密钥”添加到 gitlab 中的各个项目中,并且指纹匹配。这两个项目似乎都以相同的方式配置。
然而,这项工作失败了,输出是:
Running with gitlab-runner 11.0.0 (5396d320)
on wawsrvbuild70 3295e1f6
Using Shell executor...
Running on wawsrvbuild70...
Fetching changes...
HEAD is now at 5e3be99 CI test
From https://gitlab01.mydomain.pl/Group/baseProject
5e3be99..0029318 p.czechows2/configure-gitlab-ci#1038 -> origin/p.czechows2/configure-gitlab-ci#1038
Checking out 00293180 as p.czechows2/configure-gitlab-ci#1038...
Skipping Git submodules setup
$ eval $(ssh-agent -s)
Agent pid 18755
$ ssh-add ~/.ssh/submoduleOne
Identity added: /home/gitlab-runner/.ssh/submoduleOne (/home/gitlab-runner/.ssh/submoduleOne)
$ ssh-add -l
4096 27:f5:e5:86:af:a7:7a:aa:52:03:b1:6d:05:72:56:29 /home/gitlab-runner/.ssh/submoduleOne (RSA)
$ git submodule update --init -- lib/submoduleOne
$ ssh-add -D
All identities removed.
$ ssh-add ~/.ssh/submoduleTwo
Identity added: /home/gitlab-runner/.ssh/submoduleTwo (/home/gitlab-runner/.ssh/submoduleTwo)
$ ssh-add -l
4096 89:aa:68:f9:88:72:4c:cf:8a:a3:c7:7e:34:92:91:6b /home/gitlab-runner/.ssh/submoduleTwo (RSA)
$ git submodule update --init -- third_party/submoduleTwo
Cloning into 'third_party/submoduleTwo'...
fatal: Authentication failed for 'https://gitlab-ci-token:yXkvnfXZadABF4FZWTSb@gitlab01.mydomain.pl/Group/submoduleTwo.git/'
Clone of 'https://gitlab-ci-token:yXkvnfXZadABF4FZWTSb@gitlab01.mydomain.pl/Group/submoduleTwo.git' into submodule path 'third_party/submoduleTwo' failed
ERROR: Job failed: exit status 1
这个令牌yXkvnfXZadABF4FZWTSb
是我认为我在为 baseProject 配置时给 gitlab-runner 的令牌。但我不确定在哪里检查这个。此外,更改子模块初始化的顺序也无济于事:问题仍然出在 submoduleTwo 上。所以我的问题是:为什么 gitlab-runner 不使用存储在 ssh-agent 中的私钥来克隆这个存储库?或者我在某个地方犯了错误?也欢迎有关如何在 gitlab-runner 中以不同方式配置子模块初始化的建议。
解决方案
推荐阅读
- javascript - JavaScript 函数:成绩分布
- powershell - Powershell 循环执行
- javascript - 如何在json响应中找到两个特定的requrement
- ios - 使用 cgImage.mask 屏蔽两个 UIImage 不起作用,但适用于 imageview.layer.mask
- jquery - 有没有办法永久添加使用 jquery 添加的元素?
- c++ - 为什么 .a 文件比 .so 文件小?
- spring-webflux - 有没有办法在 Spring Cloud Stream Reactive 方法中动态更改目的地?
- android - (Flutter) ListView 在仅包含图像的项目之间有不必要的空格
- javascript - 如果选择了单选按钮,则使用 vuejs,使用下拉列表替换数组中找到的图像
- apache - 美化 url 从 art.php?id=51 到 art/51