Openshift:如何从私有存储库安装python模块?

时间:2014-03-26 02:59:08

标签: python git ssh openshift

我希望能够将open包安装到openshift,但这些包存放在我的私有存储库中,位于bitbucket上。

如何为Openshift创建SSH密钥,如何在安装软件包时让Openshift使用它? (将相应的公钥添加到bitbucket作为Deploy Key之后)

我尝试过的事情:

我使用ssh-keygen~/.openshift_ssh/上创建了一个密钥。它已创建,但我不确定它是否被使用。

我也尝试在<jenkins_dir>/app-root/data/.ssh/jenkins_id_rsa.pub上添加publick键,但结果总是一样的。在buildjob的jenkins控制台输出上:

Doing git clone from ssh://git@bitbucket.org/jpimentel/zed.git to /tmp/easy_install-FpEKam/zed.git
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

有什么可以做的吗?

2 个答案:

答案 0 :(得分:1)

所以,此时OpenShift并没有提供一个简单的机制来实现这一点。我敦促开发人员查看https://gondor.io/support/dependencies/以找到解决问题的有效方法。

也就是说,我终于能够找到一个可接受的(至少对我而言)解决方案,该解决方案适用于可伸缩和不可伸缩的应用程序,具有以下过程:

  1. 在存储库中创建部署/目录

  2. 将您的私有部署密钥的副本放在所述目录

  3. 创建一个bash脚本deploy / wrapper.sh,它将使用提供的密钥运行ssh:

    #!/bin/sh
    ssh -o StrictHostKeyChecking=no -i $OPENSHIFT_REPO_DIR/deploy/id_deploy $@
    

    注意传递的选项以禁用主机密钥检查;没有它,克隆就会失败。

  4. 在构建挂钩(.openshift/action_hooks/build)中安装依赖项。在我的情况下,我添加了类似

    的内容
    echo "Cloning private repo..."
    source $VIRTUAL_ENV/bin/activate
    GIT_SSH=$OPENSHIFT_REPO_DIR/deploy/wrapper.sh pip install git+ssh://git@bitbucket.org/team/reponame.git#egg=reponame
    
  5. 提交所有内容并将其推送到openshift。

  6. 利润!

答案 1 :(得分:0)

如果要部署自定义python模块,那么推荐的方法是在应用程序源代码根目录中创建一个libs目录,并将它们推送到应用程序git存储库。 OpenShift会自动选择你的模块。