无法使用Gitlab Ci部署两个存储库



我在gitLab有两个存储库。一个有前端应用(Ionic, Cypress),另一个有后端应用(Django, Postgis)。为了进行集成测试,我需要后端和前端。当我在前端提交时,我想使用gitLab CI在服务器上部署两个项目,并从那里执行脚本来运行cypress测试。我的问题是部署两个存储库。它适用于第一种,但不适用于第二种。我是gitlab CI的新手。我gitlab-ci.yml

variables:
BACKEND: git@gitlab.com:ctavar01/advisor_grammar_es_tests.git
before_script:
- apt-get update -qq
- apt-get install -qq git
# Setup SSH deploy keys
- 'which ssh-agent || ( apt-get install -qq openssh-client )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *ntStrictHostKeyChecking nonn" > ~/.ssh/config'
deploy_staging:
type: deploy
environment:
name: staging
url: myipaddress
script:
- ssh myuser@myipaddress "cd ./app && git checkout master && git pull origin master && exit"
- ssh myuser@myipaddress "cd ./backend && git checkout master && git pull origin master && exit"
only:
- master

我在目标服务器的用户帐户中所做的操作使用两个密钥对:一个用于回购后端,另一个用于回购应用id_rsa, id_rsa_app我已经将这两个密钥添加到服务器中的用户代理中我的配置

# GitLab.com server
Host username1
HostName gitlab.com
RSAAuthentication yes
IdentityFile ~/.ssh/id_rsa
Host username2
HostName gitlab.com
RSAAuthentication yes
IdentityFile ~/.ssh/id_rsa_app

我已经将两个公钥复制到相应的gitlab repos部署密钥中我已经将私钥复制到相应的gitlab repos变量(SSH_PRIVATE_KEY)

第一个脚本命令执行正确。第二个在git pull origin master中失败我想我无法让脚本识别第二个键。我错过了什么?

不知道如何介绍所要求的细节。张贴作为接受的答案,但它不是。作业输出

Getting source from Git repository
00:03
$ eval "$CI_PRE_CLONE_SCRIPT"
Fetching changes with git depth set to 50...
Initialized empty Git repository in /builds/ctavar01/advisor_app/.git/
Created fresh repository.
Checking out f323f983 as master...
Skipping Git submodules setup
Executing "step_script" stage of the job script
00:06
$ apt-get update -qq
$ apt-get install -qq git
$ which ssh-agent || ( apt-get install -qq openssh-client )
/usr/bin/ssh-agent
$ eval $(ssh-agent -s)
Agent pid 267
$ ssh-add <(echo "$SSH_PRIVATE_KEY")
Identity added: /dev/fd/63 (/dev/fd/63)
$ mkdir -p ~/.ssh
$ [[ -f /.dockerenv ]] && echo -e "Host *ntStrictHostKeyChecking nonn" > ~/.ssh/config
$ ssh myuser@ myipaddress "cd /home/marketradar_e2e/app && git checkout master && git pull origin master && exit"
Warning: Permanently added 'myipaddress' (ECDSA) to the list of known hosts.
Permission denied, please try again.
Permission denied, please try again.
myuser@myipaddress: Permission denied (publickey,password).
Cleaning up file based variables
00:01
ERROR: Job failed: exit code 1

如果您有一个包含Host条目的~/.ssh/config文件,那么要使用的SSH URL将是:

myuser@username1
# or
myuser@username2

只有使用Host条目才能引用正确的私钥。

由于第一个条目使用默认~/.ssh/id_rsa私钥,因此它使用默认的SSH URL。
但是第二个只有在您基于第二个Host条目使用正确的SSH URL时才能工作。

最新更新