Docker Bluemix开发操作:使用私有git子模块构建项目

Docker Bluemix开发操作:使用私有git子模块构建项目,docker,containers,ibm-cloud,pipeline,devops,Docker,Containers,Ibm Cloud,Pipeline,Devops,我想知道如何使用ibmbluemix开发人员Ops服务构建带有私有git子模块的项目 在我的管道中,我有一个类型为“Shell脚本”的“构建”作业: #!/bin/bash git submodule init git submodule update --recursive 但我的子模块包括许多私有存储库,我得到: Host key verification failed. fatal: Could not read from remote repository. Please make

我想知道如何使用ibmbluemix开发人员Ops服务构建带有私有git子模块的项目

在我的管道中,我有一个类型为“Shell脚本”的“构建”作业:

#!/bin/bash
git submodule init
git submodule update --recursive
但我的子模块包括许多私有存储库,我得到:

Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
在我的本地机器中,我能够运行这些命令,因为我有访问权限,并且我正在使用我的密钥。我能做些什么使它在这里工作?我不希望将我的私钥提交到git中

我正在部署的应用程序的repo托管在GitHub上。私有子模块托管在BitBucket上

更新

我尝试在生成控制台中使用私钥,但无效:

echo "... my private key ..." >> ~/.ssh/throwaway_key
chmod 400 ~/.ssh/throwaway_key
ssh-agent bash -c 'ssh-add ~/.ssh/throwaway_key; git submodule update --recursive'
因为我在docker容器中,所以它不工作吗?我必须更新
/etc/ssh/ssh\u配置吗?我无法在运行此作业的容器中访问此文件

更新2

我也尝试过,但没有成功:

echo "Host            bitbucket.org
    Hostname        bitbucket.org
    IdentityFile    ~/.ssh/throwaway_key
    IdentitiesOnly yes" >> ~/.ssh/config

我有一个类似的设置。我定义了一个签出作业,其任务是重新提取源代码,并在克隆URL中显式传递密码。完成后,子模块更新工作正常。以下是脚本:

#!/bin/bash
git clone --recursive https://myname:$PASSWORD@hub.jazz.net/git/myname/my-project
cd my-project
git submodule update --remote
密码
在“环境属性”选项卡上定义为安全属性。它有点笨重和不干燥,但它实现了我想要的行为


我使用签出作业作为构建作业的输入(我可能可以将其作为一个大作业来完成,但我希望能够直观地区分签出和构建中的失败)。

这对我来说很有效,使用

在我最初的尝试中,该操作没有起作用,因为我未能将SSH密钥从环境变量正确地移动到文件中


它利用了

中的选项3,这里有一个简单的解决方案:

  • 将构建阶段类型从“简单”更改为“Shell脚本”

  • 将此添加到脚本:

     git submodule init
     git config submodule.foo.url https://$USERNAME:$PASSWORD@github.com/foo.git
     git submodule update --recursive
    
  • 在环境属性中添加
    用户名
    密码

  • 学分:


    上述方法的问题在于,您需要在交付管道中为每个子模块进行设置。当子模块更改时,可能会产生问题

    另一个可能的解决方案是在管道中设置git凭据存储:

    git config credential.helper store
    echo "https://LOGIN:${PAT}@github.com/path/to/submodule.git" > ~/.git-credentials
    
    学分:


    阅读更多信息:

    您不能将密钥粘贴到构建shell脚本中,并在那里提供密钥吗?否则,Bluemix DevOps不提供对SSH的任何支持keys@BenRondeau我根据你的建议做了一些尝试。你能看到我的更新并给我任何其他建议吗?你有任何错误输出吗?还是默默地失败了?@BenRondeau它给了我同样的错误,我没有访问权限。我在本地尝试了
    ssh代理…
    解决方案,我可以确认它可以正常工作。我还试过编辑
    ~/.ssh/config
    (请查看我的另一个编辑)好的。在这一点上,我已经力不从心了。我会看看是否能从我们的DevOps团队中找个人加入进来。谢谢
    git config credential.helper store
    echo "https://LOGIN:${PAT}@github.com/path/to/submodule.git" > ~/.git-credentials