【问题标题】:git clone returns permission issue in jenkinsgit clone 在 jenkins 中返回权限问题
【发布时间】:2019-12-11 20:46:20
【问题描述】:

我有一个 jenkins,我使用 jenkins 配置克隆了一个 repo。 然后在那个仓库中我有一个克隆另一个仓库的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

现在的问题是因为在 jenkins 中运行的代码无法访问我得到的 repo:

"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 中添加私钥,然后它会在克隆 repo 时使用该密钥?

【问题讨论】:

    标签: git jenkins ansible


    【解决方案1】:

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

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

    您可以在运行 playbook 之前复制该密钥,也可以在运行 git 之前复制该密钥。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2019-01-10
        • 2015-12-25
        • 2011-12-15
        • 2014-04-20
        • 2018-04-15
        • 2015-10-17
        • 1970-01-01
        • 1970-01-01
        • 2021-11-09
        相关资源
        最近更新 更多