【问题标题】:In Jenkins: pip install from git repo using SSH keys在 Jenkins 中:使用 SSH 密钥从 git repo 进行 pip 安装
【发布时间】:2019-08-28 19:42:16
【问题描述】:

在我的 Jenkins 工作中,在构建阶段,我执行 pip install -r requirements.txt。在我的项目要求中,有一些通往私有 git 存储库的路径,需要 SSH 密钥进行身份验证。我已经创建了密钥(没有密码),将公钥添加到 BitBucket 服务器,并将私钥添加到 Jenkins 的凭据中。

我的项目代码使用相同的 SSH 密钥成功提取(在内部,Jenkins 使用 GIT_SSH),但 pip 不知道将它们传递给服务器进行身份验证(日志显示:Permission denied (publickey)

我见过 Use SSH Key from Jenkins Git Plugin to Run Git Commands During Build ,但没有人回答。我还看到了一些关于 Publish Over SSH 插件的其他讨论,但我不确定它是否适用于我..

顺便说一句,构建机器是 Windows。

自动将私钥写入<home_folder>\.ssh\id_rsa 对我来说似乎是一种安全风险,尽管我可能错了..?

有没有办法将 Jenkins 配置为使用与 pip install ssh 条目相同的 SSH 密钥?

【问题讨论】:

  • 另一个不涉及密钥的可能解决方法是将您的用户名/密码添加到 Windows 凭据管理器并使用 https 而不是 ssh。我遇到了完全相同的问题,这是迄今为止最耗时的解决方案。

标签: git jenkins ssh pip requirements.txt


【解决方案1】:

一种可能的解决方法:

  • 让 Jenkins 克隆包含 pip 模块的私有仓库,即包含 setup.py 文件。假设 repo 已被克隆到 /tmp/my_private_repo

  • 选项 1:cd /tmp/my_private_repo && pip install -e .

  • 选项 2:pip install git+file:///tmp/my_private_repo(注意 file 后面的 3 个///

【讨论】:

  • 我会编辑您的答案,但规则不允许修复单个字符。但是@gogo_gorilla 可以修复错字应该是“注意 3 ...”与“不是 3”。
【解决方案2】:

我使用SSH Agent plugin 在 Linux/Mac 机器上执行此操作。 pip install 命令必须进入 SSH 代理的 withCredentials。该插件声称支持 Windows(有一些额外要求),但我从未尝试过。

我认为我无法让 pip 尊重 Jenkins 用于 SCM 步骤的 GIT_SSH

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 2013-12-04
    • 2019-08-03
    • 2012-08-03
    • 2020-04-25
    • 2013-02-25
    相关资源
    最近更新 更多