Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GitLab-在CI中使用用户名和密码的Git pull命令_Gitlab_Gitlab Ci_Gitlab Ci Runner - Fatal编程技术网

GitLab-在CI中使用用户名和密码的Git pull命令

GitLab-在CI中使用用户名和密码的Git pull命令,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,我已将CI管道配置为通过SSH远程连接到服务器,并使用最新的更改更新那里的git存储库。但它失败了。因为当CI运行git pull命令时,响应是:“无法读取“”的用户名” 我的问题是:有没有一种方法可以在一个命令中运行包含用户名和密码的git pull? 我知道最好的方法是将SSH密钥添加到gitlab变量中,以避免询问用户名和密码,但这对我也不起作用。所以我唯一的选择就是提供用户名和密码 我的gitlab-ci.yml文件如下所示: deploy\u staging: 阶段:部署 在脚本之前

我已将CI管道配置为通过SSH远程连接到服务器,并使用最新的更改更新那里的git存储库。但它失败了。因为当CI运行
git pull
命令时,响应是:“无法读取“”的用户名”

我的问题是:有没有一种方法可以在一个命令中运行包含用户名和密码的git pull?

我知道最好的方法是将SSH密钥添加到gitlab变量中,以避免询问用户名和密码,但这对我也不起作用。所以我唯一的选择就是提供用户名和密码

我的gitlab-ci.yml文件如下所示:

deploy\u staging:
阶段:部署
在脚本之前:
-mkdir-p~/.ssh
-echo-e“$DEPLOY\u KEY”>~/.ssh/id\u rsa
-chmod 600~/.ssh/id\u rsa
-“[[-f/.dockerenv]]和&echo-e”主机*\n\t三通键检查号\n\n“>~/.ssh/config”
脚本:
-sshubuntu@example.com "
cd my_项目&&
吉特拉力

您的订单不正确。当您应该在执行
pull
命令的
example.com
环境中添加ssh deploy密钥时,您可以将其添加到执行CI作业的环境中

这就像准备一个有椅子和桌子的房间,然后进入下一个房间,期待你能坐在另一个房间的椅子上

您应该按照
ubuntu@example.com
用户到您的项目部署密钥

这应该是所有的工作,使最后一点

注:
您对以下内容的评论:
echo-e“$DEPLOY\u KEY”>~/.ssh/id\u rsa;sshubuntu@example.com“cd myProject&&git pull
不会更改顺序,您仍然会将部署密钥添加到当前环境中,然后通过ssh输入另一个密钥

我非常努力地遵循gitlab官方指南以及@Stefan的建议中提到的每一步,但仍然无法在远程服务器上运行
git pull
命令

但是我可以通过SSH连接到远程服务器

因此,我最终将gitlab凭据存储在服务器上,以避免中断CI执行

 $ git config credential.helper store
 $ git push http://example.com/repo.git
 Username: <username>
 Password: <password>
$git config credential.helper存储
$git推送http://example.com/repo.git
用户名:
密码:

只需使用下面的命令在GitLab CI上拉取不带凭据的repo即可

git pull${CI\u REPOSITORY\u URL}


CI_REPOSITORY_URL——是GitLab预定义的环境URL

Try
ssh add~/.ssh/id_rsa;ssh-Aubuntu@example.com“cd项目和git拉动”
。检查-@HarishVed,我现在得到“无法打开到您的身份验证代理的连接”。错误。检查-@BenjaminI明白您的意思。我现在正在编辑“example.com”环境,比如:“-echo-e”$DEPLOY\u KEY”>~/.ssh/id\u rsa;sshubuntu@example.com“cd myProject&&git pull”,但仍然收到相同的错误,即:“无法读取“”的用户名”“,非常感谢您的帮助。令我困惑的是,如果订单错误,那么我为什么甚至可以成功连接到服务器?因为我可以很容易地在远程服务器上以当前的顺序执行“mkdir”命令,所以我编辑了答案