我已经通过SSH将我的CI管道配置为远程服务器并使用最新的更改更新git存储库。然而它失败了。因为当CI运行git pull
命令时,响应是:“无法读取'https://gitlab.com'的用户名”
我的问题是,有没有办法在一个命令中运行包含用户名和密码的git pull?
我知道最好的方法是将SSH密钥添加到gitlab变量中以避免询问用户名和密码,但这对我来说也不起作用。所以我唯一的选择是提供用户名和密码。
我的gitlab-ci.yml文件如下所示:
deploy_staging:
stage: deploy
before_script:
- mkdir -p ~/.ssh
- echo -e "$DEPLOY_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
script:
- ssh ubuntu@example.com "
cd my_Project &&
git pull
"
答案 0 :(得分:1)
您的订单不正确。将ssh部署密钥添加到执行CI作业的环境时,应将其添加到执行private void richTextBox1_TextChanged(object sender, EventArgs e)
{
int current = richTextBox1.SelectionStart;
for (int i = 0; i < richTextBox1.Lines.Length; i++)
{
string line = richTextBox1.Lines[i];
int index = line.IndexOf(' '), lineFirstIndex = line.IndexOf('@');
if (index != -1 && lineFirstIndex != -1)
{
richTextBox1.Select(lineFirstIndex, index);
richTextBox1.SelectionColor = Color.Red;
}
else
{
lineFirstIndex = richTextBox1.GetFirstCharIndexFromLine(i);
richTextBox1.Select(lineFirstIndex, line.Length);
richTextBox1.SelectionColor = Color.Empty;
}
}
richTextBox1.Select(current, 0);
}
命令的example.com
环境中。
这就像准备一个带椅子和桌子的房间然后进入下一个房间,并希望你可以坐在另一个房间的椅子上。
您应该按照Deploy keys的说明操作,并将pull
用户的公钥添加到项目部署密钥中。
这应该是最后一点工作的全部。
您对以下内容的评论:ubuntu@example.com
不会更改订单,您仍然会将deploy_key添加到当前环境中,然后通过ssh输入另一个。
答案 1 :(得分:1)
我非常努力地遵循gitlab官方指南here提到的每一步以及@Stefan的建议,但我仍然无法运行{{1远程服务器上的命令。
但我可以通过SSH连接到远程服务器。
因此,我最终将gitlab凭证存储在服务器上,以避免中断CI执行。
git pull
答案 2 :(得分:0)
只需使用以下命令即可在GitLab CI上没有凭证的情况下提取回购
git pull ${CI_REPOSITORY_URL}
CI_REPOSITORY_URL-是GitLab预定义的环境URL