使用 HTTPS 从 gitlab CI 作业克隆私有 Repo 而不将我的凭据公开到 CLI

Sha*_*n93 6 git gitlab gitlab-ci gitlab-ci-runner

我有一个 gitlab ci 工作,它为我做了一些工作,但它取决于另一个仓库,所以我需要在这个工作中克隆另一个仓库。我无法使用 https 克隆,因为 gitlab 会询问我的用户名和密码,而 gitlab ci 是非交互式的。
那么如何在 gitlab ci 作业中使用 https 克隆 gitlab repo。
提前致谢。

Sha*_*n93 6

我找到了一种方法来验证我的克隆。首先,我导航到我的 gitlab 帐户设置,然后导航到访问令牌选项卡。在此输入图像描述 然后使用任何名称创建新的访问令牌,您可以将到期日期留空(但为了安全起见,我设置了到期日期),然后选择您想要的正确范围。就我而言,我已经阅读了回购范围。

然后我使用生成的访问令牌使用 https 克隆我的存储库,如下所示

https://oauth2:YOUR_ACCESS_TOKEN@gitlab.com/PATH/TO/YOUR/REPO.git
Run Code Online (Sandbox Code Playgroud)

为了防止 CLI 暴露您的访问令牌,您必须将您的访问令牌添加到 gitlab 的 CI 变量列表中作为屏蔽。因此,当执行克隆时,您的访问令牌将不会显示。 然后将按如下方式访问它

https://oauth2:$ACCESS_TOKEN@gitlab.com/PATH/TO/YOUR/REPO.git
Run Code Online (Sandbox Code Playgroud)


cec*_*ami 6

如果您运行的是 gitlab 版本 8.12 或更高版本,则权限模型已重新设计。与这个新的权限模型一起出现的是 CI 环境变量 CI_JOB_TOKEN。GitLab 的高级版本使用此环境变量作为触发器,但您可以使用它来克隆存储库。

dummy_stage:
  script:
    - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.instance/group/project.git
Run Code Online (Sandbox Code Playgroud)


Iro*_*hop 3

您应该使用 SSH 和只读部署密钥克隆该存储库,并可能将令牌存储在屏蔽变量中。