之前的項目是 public 的,如果我們在 gitlab上面把它修改成 private,然后再次打開配置,就可能會出現(xiàn)下面的錯誤,兩種協(xié)議都會進(jìn)行報錯。
名稱 | IP | 備注 |
---|---|---|
Jenkins | 172.18.2.101 | 內(nèi)網(wǎng)IP |
Gitlab | 172.18.2.100 | 內(nèi)網(wǎng)IP |
如果要通過 git 協(xié)議拉取代碼,需要建立 Jenkins 服務(wù)器和 Gitlab 服務(wù)器的無密碼通信,我們首先要生存一組密鑰對。
ssh-keygen -t rsa -C "wzlinux"
[root@jenkins ~]# ll .ssh/
total 12
-rw------- 1 root root 1675 Sep 3 22:05 id_rsa
-rw-r--r-- 1 root root 408 Sep 3 22:05 id_rsa.pub
-rw-r--r-- 1 root root 348 Sep 4 21:21 known_hosts
我們登錄 gitlab,打開自己的用戶設(shè)置,選擇 SSH Keys 選項進(jìn)行配置,填寫我們剛剛生成的公鑰(id_rsa.pub)。
SSH Keys 幫助我們建立 jenkins 到 gitlab 的安全無密碼連接。
[root@jenkins test]# git clone git@172.18.2.100:java/game.git
Cloning into 'game'...
remote: Enumerating objects: 1768, done.
remote: Counting objects: 100% (1768/1768), done.
remote: Compressing objects: 100% (584/584), done.
remote: Total 1768 (delta 1112), reused 1768 (delta 1112)
Receiving objects: 100% (1768/1768), 15.02 MiB | 0 bytes/s, done.
Resolving deltas: 100% (1112/1112), done.
我們可以看到,配置了SSH Keys之后,我們可以直接在服務(wù)器上面無密碼拉取代碼了。
當(dāng)我們再次打開配置,發(fā)現(xiàn)認(rèn)證還是有問題,這時候我們需要添加認(rèn)證,因為 jenkins 并不知道我們的秘鑰。
添加私鑰,然后確定。
認(rèn)證選擇我們剛剛添加的私鑰,已經(jīng)不再報錯。
修改了權(quán)限之后,我們重新構(gòu)建項目,查看整個過程。
沒有任何問題,SSH Keys權(quán)限認(rèn)證通過。
和 ssh 基本一樣,我們只需要再添加認(rèn)證的時候?qū)懳覀冊?gitlab 上面的用戶名密碼即可。
然后再選擇對應(yīng)的認(rèn)證方法。
拉取代碼也沒有什么問題。