Docker Bluemix开发操作:使用私有git子模块构建项目
我想知道如何使用ibmbluemix开发人员Ops服务构建带有私有git子模块的项目 在我的管道中,我有一个类型为“Shell脚本”的“构建”作业: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
#!/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