首页 > 解决方案 > 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 中以不同方式配置子模块初始化的建议。

标签: gitlabgit-submodulesgitlab-ci-runnerssh-agent

解决方案


推荐阅读