在Heroku应用上pip安装私有git repo的正确/安全方法是什么?

sbdsn5lh  于 2022-11-13  发布在  Git
关注(0)|答案(1)|浏览(301)

应用程序结构(Python FastAPI):

-my_app
  -server.py
  -Procfile
  -requirements.txt

为了安装Heroku应用所需的私有git repo,我在requirements.txt中添加了以下代码行:

git+https://<github-token>@github.com/me/my-private-repo.git

然而,在推送时,Github发邮件给我说,由于我在提交中暴露了我的令牌,它已经撤销了令牌。(我的应用程序repo是私有的。)完全公平!然而,我的Heroku构建现在失败了,因为它在试图安装私有repo时提示输入密码。
我在网上搜索了很多次私人回购协议,但总是遇到相互矛盾的建议。
如果您能知道在这种情况下在自动构建中安全地安装私有存储库的最佳实践,我将不胜感激。
到目前为止,我已经尝试过:

  • git+git://username:password@github.com/me/myrepo.git而不是token显然也有同样的问题
  • git+ssh://git@github.com/me/myrepo.git-产生错误Host key verification failed.
  • 将用户名:密码(或令牌)存储为Heroku环境变量-从here看,这在pip中是不可能的

要扩展ssh选项,请在我的本地计算机上执行以下操作:

  • pip3 install git+ssh://git@github.com/me/my_private-repo.git
  • git clone https://github.com/me/my_private-repo.git

但是,当我的requirements.txt包含git+ssh://git@github.com/me/my_private-repo.git时,我的Heroku构建将返回Host key verification failed. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

u3r8eeie

u3r8eeie1#

我感谢Michel Blancard的answer和相关的gist,以及Bo Jeanes的custom buidpack
requirements.txt中:

git+ssh://git@github.com/me/my-private-repo.git

将我的SSH私钥转换为Heroku(!)的(旧)PEM格式:

ssh-keygen  -f ~/.ssh/id_rsa -m PEM -p

(应贷记this answer
将SSH私钥添加为Heroku变量:

heroku config:set BUILDPACK_SSH_KEY="$(cat ~/.ssh/id_rsa)"

添加this自定义构建包,以便在启用SSH私钥的Python构建包之前运行:

heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-ssh-key.git

展开!

相关问题