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

时间:2018-01-26 11:11:48

标签: gitlab gitlab-ci gitlab-ci-runner

我已经通过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
      "

3 个答案:

答案 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