我有一个詹金斯,我使用詹金斯配置克隆了一个仓库。 然后在该存储库中,我有一个忙碌的任务,它会克隆另一个存储库:
- 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中添加配置中的私钥,然后在克隆仓库时会使用该私钥吗?
答案 0 :(得分:1)
该密钥需要可用于运行任务的目标服务器上的remote_user
。默认情况下,它将读取~/.ssh
中可用的默认ssh密钥(例如,如果创建了rsa,则为id_rsa
)。
如果密钥不在默认位置/名称中,则git
module具有
一个key_file
参数,可用于指向正确的位置。
您可以在运行剧本之前复制该键,也可以在运行git之前在任务中复制该键。
如果要控制Jenkins的所有内容,则可以在Jenkins中将密钥内容添加为“秘密文件”凭证,将该凭证绑定到var(将包含秘密临时文件的路径),然后复制该文件到目标服务器,并使用该上载的文件作为您的git
任务中的密钥(默认或自定义)。
答案 1 :(得分:1)
确保已启用(设置>存储库>部署密钥)下的Repo的部署密钥