在Jenkins中:使用SSH密钥从git repo进行pip安装

In Jenkins: pip install from git repo using SSH keys

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

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

我已经看到在Build期间使用Jenkins Git插件中的SSH密钥来运行Git命令,但没有得到答案。我也看过其他有关Publish Over SSH插件的话题,但是我不确定它是否适用于我。.

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

自动将私钥写入<home_folder>\\.ssh\\id_rsa对我来说似乎有安全隐患,尽管我可能错了..?

是否有一种方法可以配置Jenkins使用与必须pip安装ssh条目相同的SSH密钥?


可能的解决方法:

  • 让Jenkins克隆包含pip模块(即包含setup.py文件)的私有存储库。假设存储库已克隆到/tmp/my_private_repo

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

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


我已使用SSH代理插件在Linux / Mac计算机上执行此操作。 pip install命令必须放在SSH代理的withCredentials内部。该插件声称支持Windows(还有一些其他要求),但我从未尝试过。

我认为我无法让Jenkins在SCM步骤中使用GIT_SSH