連接 gitlab 獲取倉庫代碼
做jobs拉取gitlab源代碼 部署到生產環境上
點配置
在gitlab上創建一個倉庫 以html代碼倉庫的
我們這次通過導入方式,從別的地方導入倉庫進來
我們從碼雲 拿到項目的url地址導入 拿到url回到gitlab


選擇私有 點擊創建倉庫


倉庫創建好了以后,就有地址了,使用jenkins把這個倉庫地址拉到jenkins上去,然后在jenkins 把HTML代碼部署到指定的服務器上 跑起來
最終目的:gitlab倉庫上的代碼拉到我們jenkins上,然后用jenkins發到另外一台服務器上去進行部署
我們使用上面的 job 進行配置,在“源碼管理”部分配置拉取 Gitlab 上的 monitor 倉庫,該倉庫是一個純 html 代碼項目,首先在 Gitlab 上復制倉庫地址
然后回到 Jenkins 上 My-freestyle-job 配置頁面,下拉到“源碼管理”部分,勾選 git選項
如果遇到這種錯誤

jenkins服務器 要安裝git
粘貼完倉庫地址后,出現如下圖所示錯誤提示,

根據提示信息顯示為 key 認證失敗,因為我們使用的 SSH 方式連接倉庫,所以需要配置SSH認證,jenkins這台機器沒有做和gitlab的認證,沒有做認證,實際上在前面我們學習Gitlab的時候,我們已經配置了ci-node2這台機子的root用戶的公鑰在 Gitlab 上的 dev 用戶
,為什么我們這里還需要認證?下面我們來查看一下Jenkins 服務的啟動用戶,
[root@ci-node2 ~]# ps aux |grep jenkins root 72936 0.0 0.1 112712 964 pts/0 R+ 00:50 0:00 grep --color=auto jenkins jenkins 108096 0.1 55.4 2339100 370532 ? Ssl Apr07 6:01 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
而我們在Gitlab上配置的root用戶的公鑰,現在我們有兩種方式解決認證失敗的問題,
1、在jenkins上配置使用root用戶的私鑰連接Gitlab,
2、配置使用root用戶啟動jenkins。
下面我們先來看第一種方式
在jenkins上配置使用root用戶的私鑰連接Gitlab
把ci-node2主機的公鑰配給gitlab 的ssh key上 (把之前gitlab ci-node2綁定dev用戶的key刪除),綁定gitlab的root用戶上 ,gitlab 一個用戶可以配多個key

如果配不上就是 之前添加過了,不讓重復添加,一個可以在gitlab是唯一的
現在ci-node2和gitlab 配置好權限了 把root權限打通
還會出現key認證失敗,因為以jenkins用戶啟動jenkins

進入認證添加頁面
讓jenkins拿着root用戶私鑰去和gitlab 公鑰對

根據提示添加用戶認證后,回到配置倉庫頁面,選擇認證方式為新添加的認證,錯誤消失。 認證通過了
第二種方法:以root用戶啟動jenkins
接下來我們更改 Jenkins 服務的啟動用戶為 root,編輯/etc/sysconfig/jenkins 文件,
配置 Jenkins 的啟動用戶為 root,然后重啟 Jenkins 服務
[root@ci-node2 ~]# cat /etc/sysconfig/jenkins |grep -v "^#" |grep -v ^$ JENKINS_HOME="/var/lib/jenkins" JENKINS_JAVA_CMD="" JENKINS_USER="root" JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true" JENKINS_PORT="8080" JENKINS_LISTEN_ADDRESS="" JENKINS_HTTPS_PORT="" JENKINS_HTTPS_KEYSTORE="" JENKINS_HTTPS_KEYSTORE_PASSWORD="" JENKINS_HTTPS_LISTEN_ADDRESS="" JENKINS_DEBUG_LEVEL="5" JENKINS_ENABLE_ACCESS_LOG="no" JENKINS_HANDLER_MAX="100" JENKINS_HANDLER_IDLE="20" JENKINS_ARGS=""
[root@ci-node2 ~]# ps aux |grep jenkins root 121117 1.8 54.8 2333688 366280 ? Ssl Apr11 0:40 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20 root 123127 0.0 0.1 112712 968 pts/0 R+ 00:16 0:00 grep --color=auto jenkins
回到 job 的源碼配置頁面,

我們看到不選擇任何認證,也不會出現報錯。
總結:
配置git倉庫認證一般報兩種錯誤
1.沒有安裝git 報git命令執行錯誤
2.權限認證錯誤
而我們在Gitlab上配置的root用戶的公鑰,現在我們有兩種方式解決認證失敗的問題,
1、在jenkins上配置使用root用戶的私鑰連接Gitlab,
2、配置使用root用戶啟動jenkins。
配置完成選擇保存

保存配置后,回到 job 主頁面,點擊“立即構建”,構建完成后,我們在工作空間內可以看到從 Gitlab 倉庫拉到的代碼

同時我們在“console output”頁面可以看到整個控制台輸出內容

我們去客戶端 去workspace 工作區目錄看看

代碼都拉到了
