git clone返回詹金斯的权限问题

时间:2019-12-11 20:46:20

标签: git jenkins ansible

我有一个詹金斯,我使用詹金斯配置克隆了一个仓库。 然后在该存储库中,我有一个忙碌的任务,它会克隆另一个存储库:

- name: Mock Server
  vars:
    mock_server: "{{ base_build_path }}/uds-mock-server"
  git:
    repo: 'git@github.ibm.com:xxxxx/mock-server.git'
    dest: "{{ mock_server }}"
    clone: yes
    recursive: yes
    version: master
    track_submodules: yes

现在的问题是,由于詹金斯内部运行的代码无法访问我得到的仓库:

"Permission denied (publickey).", "fatal: Could not read from remote repository.", "", "Please make sure you have the correct access rights", "and the repository exists."], "stdout": "", "stdout_lines": []}

所以无论如何我可以在jenkins中添加配置中的私钥,然后在克隆仓库时会使用该私钥吗?

2 个答案:

答案 0 :(得分:1)

该密钥需要可用于运行任务的目标服务器上的remote_user。默认情况下,它将读取~/.ssh中可用的默认ssh密钥(例如,如果创建了rsa,则为id_rsa)。

如果密钥不在默认位置/名称中,则git module具有 一个key_file参数,可用于指向正确的位置。

您可以在运行剧本之前复制该键,也可以在运行git之前在任务中复制该键。

如果要控制Jenkins的所有内容,则可以在Jenkins中将密钥内容添加为“秘密文件”凭证,将该凭证绑定到var(将包含秘密临时文件的路径),然后复制该文件到目标服务器,并使用该上载的文件作为您的git任务中的密钥(默认或自定义)。

答案 1 :(得分:1)

确保已启用(设置>存储库>部署密钥)下的Repo的部署密钥