jenkins docker版拉取git代碼方法
一、首先,有兩種協議方式,一種是http使用用戶名密碼,不推薦,另一種是使用ssh協議,免密方式,推薦。
二、在jenkins上生成公鑰:
1、進入容器
docker exec -it rongqiname /bin/bash
2、執行:
ssh-keygen -t rsa
一路回車直到結束就ok
3、復制公鑰,公鑰是pub哦,私鑰是。。。不帶pub的
cat ~/.ssh/rsa.pub 這個是公鑰文件,,,但是docker中的jenkins貌似不在這里,這個是人家root的,記住,~代表root哦
這時候,你whoami一下,linux系統是jenkins用戶,so,繼續下面命令:
cat /var/jenkins_home/.ssh/id_rsa.pub
然后復制內容,注意要一字不漏。
4、把復制好的公鑰內容,拷貝到git里,但是,git也不一定好配置,請看:
這里以gitee為例,因為朋友用的這個,但是都是大同小異哦,不懂的v我:marinechat。
首先登陸gitee,然后 https://gitee.com/profile
找到左側ssh公鑰配置
然后點擊進去,標題不用填,會自動補充的,直接黏貼剛才復制好的公鑰:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCctTg+b8ur3UJcTC3zb+8vNSYr/WO2OJ3dHFYFLHzJwOSPKjgPcmIMoREhmlKPbY2Rdow7sgnJf1lJNFisi9AzQdG8Trb7bwXLwaVk0uXzN65S2NSaUi9y9MrjwfUhEVNivNlsWkF9UJ/iM7tfG4inYAnTJ9LZrnsLEJ7iHubwREdjPmNrBUycIxq6IfweTzK+e14ex2zwELKa9GysBPBNKTXWjrieuOU8XgaJaOIWobxYF+BUGGS3YUXuW8OdArC4CsllRHbAWZXxFgdCbjMgk4IVngo/FeKvjntSA2nz+eHxQe25NUhCy7PswXS5NgayItoymYwwztchZXQGGbsEH jenkins@bedd012s83b9
類似上面的格式,然后保存就可以了。
現在,jenkins應該有權限可以拉取git的代碼了。
這里我說說實現原理,當然了,我也不知道真正的原理,大概是這樣:
在git里配置jenkins的公鑰,意思大概是git里保存jenkins所在linux的一個密碼文件,相當於一個憑證,每當jenkins去請求拉取代碼的時候就會驗證jenkins有沒有在git這里登記過公鑰,如果登記過並且正確,ok,通過。
好了,接下來在jenkins里配置任務:
在git那一欄這樣:
然后就不會提示這個討人厭的錯誤了:
三、原則上,上面步驟就可以了,但是還是不合理,繼續補充下面步驟
首先,去掉上面的repository url的值里的ssh:// 直接git開頭就好。。。
把jenkins所在linux里(如果是容器,就是容器里)也就是剛才公鑰目錄下的私鑰文件的內容復制一下,黏貼到jenkins頁面里:
具體步驟,新建jenkins任務的時候配置git的時候,credentials點擊Add,彈出窗口:
類型是ssh
username是git
private key選擇 enter directly單選按鈕
然后黏貼剛才復制的私鑰內容。最后點擊添加按鈕。
試試吧,有問題在說吧。。。