Jenkins獲取Gitlab源代碼


 

連接 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 工作區目錄看看

 

 代碼都拉到了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM