DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

Clone Git Repo in Jenkins Container


运行在物理机/虚拟机里的Jenkins服务,clone某个git repo时, 可以不指定credential,只要把Jenkins服务所在的OS的SSH公钥加入到git repo所在 管理系统(例如Github, Aliyun Code,Bitbucket等)的SSH公钥列表里就可以了。

这种方法的缺点是如果有多个Jenkins服务,代理管理系统里的公钥会有很多,不方便管理; 另外Jenkins没有自己的credential,可移植性不好,换一台服务器就不能正常工作了。

更好的方法是保存一对SSH秘钥,其中的公钥加入到代码管理系统里, 在Jenkins里创建一个类型为Username with private key的Credential, 其中Username是目标代码管理系统中的用户名,Private Key选择Enter directly, 把私钥内容粘贴进去。

这样就可从目标代码管理系统中clone代码了。 但有个限制,如果git repo带submodule,git submodule update时会失败。 这是由于credential只用于super repo,下面的package也需要,但拿不到这个credential, 这种情况只能老老实实在容器系统的~/.ssh里面把之前保存的密钥对加进去, 且要把私钥读写权限改成600:

进入容器:docker exec -it global-jenkins_global-jenkins_1 bash, cd到$HOME/.ssh下创建id_rsa和id_rsa.pub,再chmod 600 id_rsa, 这样Jenkins就可以clone代码库了。



Published

Nov 20, 2016

Last Updated

Nov 20, 2016

Category

Tech

Tags

  • credential 1
  • git 36
  • jenkins 26
  • ssh 23

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor