jenkins已集成git插件(如無,請自行下載)linux
Repository URL填寫http的git地址,此時未選擇相應的Credentials,會有圖中紅色提示git
HTTP協議的話,須要輸入帳號密碼來驗證,點擊Add,輸入的帳號密碼並保存,記得kind選擇「Username with password」服務器
選後Credentials選中剛剛新增的帳號密碼,紅色提示消失;app
Repository URL填寫ssh的git地址,此時未選擇相應的Credentials,會有圖中紅色提示ssh
點擊Add,須要添加ssh的credentials,這裏須要上傳的是私鑰(不是公鑰!!)加密
私鑰文件存放在~/.ssh/id_rsa 文件中,
spa
首先能夠查看jenkins的控制檯輸出日誌,是否報錯.net
或者直接去到jenkins的工做目錄插件
/var/lib/jenkins/workspace/
查看代碼是否clone下來3d
疑問點(公鑰和私鑰的理解)
爲何linux上直接能夠git clone成功,而用jenkins去執行不成功呢,而後jenkins爲何不用公鑰而要密鑰呢
我的理解:ssh生成的公鑰和私鑰是一對的,咱們在linux上經過ssh協議獲取git代碼,也是先在linux生成公鑰+私鑰,而後把公鑰上傳到git服務端,而後獲取代碼的流程是:
a. linux把公鑰上傳到git服務器;
b. git服務器使用公鑰加密信息(這裏指代碼),把信息傳回給linux;
c. linux拿到信息後,經過本地的私鑰解密信息,獲得代碼;
而公鑰私鑰存放在~/.ssh下,每一個用戶都不同
而jenkins的執行是用jenkins用戶去執行的,當git服務把信息給到jenkins的時候,jenkins在他的~/.ssh下沒有對應的私鑰,所以須要將私鑰告訴jenkins,這就是jenkins爲何須要添加私鑰;