GitLab+Jenkins持續集成


一、概述

GitLab是一個代碼倉庫,用來管理代碼。Jenkins是一個自動化服務器,可以運行各種自動化構建、測試或部署任務。所以這兩者結合起來,就可以實現開發者提交代碼到GitLab,Jenkins以一定頻率自動運行測試、構建和部署的任務,幫組開發團隊更高效的集成和發布代碼。

 

下面是我最近安裝GitLab+Jenkins環境的一個過程,記錄下來,以備日后參考。

另外,這篇文章雖然很長,講得很瑣碎,但是仍有未能描述清楚的地方,如果按照這篇文章未能搭建成功,請耐心分析,也可從官方文檔 找找靈感,繼續下去總會成功的。

 

環境

操作系統 ip地址 角色 訪問地址
ubuntu-16.04.4-server-amd64 192.168.10.122 Jenkins http://192.168.10.122:8080/
ubuntu-16.04.4-server-amd64 192.168.10.134 GitLab http://192.168.10.134/

 

 

 

 

Jenkins 安裝教程,請參考鏈接:

https://www.cnblogs.com/xiao987334176/p/11323795.html

GitLab 安裝教程,請參考鏈接:

https://www.cnblogs.com/xiao987334176/p/11329018.html

 

二、使用GitLab創建一個項目

點擊 Create a project

 

創建 test 項目

 

添加 README 文件

 

輸入內容,點擊確定

 

 

效果如下:

 

創建jenkins用戶

點擊扳手按鈕

 

點擊 User

 

添加 jenkins 用戶,點擊最下面的Create user按鈕。

 

 點擊編輯

 

修改密碼,這里我定義的是 jenkins@1234

 

設置jenkins 用戶ssh秘鑰

 點擊 Impersonate ,表示冒充jenkins 用戶

 

點擊設置

 

點擊 ssh keys

 

登錄到jenkins服務器,生成秘鑰

ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

 

查看公鑰

cat /root/.ssh/id_rsa.pub

 

將公鑰內容復制到網頁,點擊添加秘鑰

 

創建Access Tokens

點擊左側的Access Tokens,輸入用戶 jenkins,勾選權限,點擊創建

復制token,待會 jenkins 設置時,會用到。Zzis8ALsiYuytsg2GH-5

 

 

點擊退出

 

重新登錄root用戶,點擊test

 

點擊設置-成員

 

 

添加jenkins 用戶,這樣就可以訪問項目了

 

 

三、 jenkins 安裝和Git,GitLab插件

由於 jenkins安裝時,勾選了推薦安裝的插件,因此包含了git插件。

現在只需要安裝gitlab插件即可

 

點擊 Manage Jenkins --> Manage Plugins -->可選插件,搜索gitlab

勾選gitlab,點擊直接安裝

 

等待十幾分鍾

 

提示安裝完成

點擊 Manage Jenkins --> Configure System -->配置 -->Gitlab

 

 

Connection Name ”隨便填,“Git Host URL”填GitLab的訪問地址,然后點“Add”——“jenkins”,如下所示:

 

選擇gitlalb api,輸入 jenkins 用戶創建的token Zzis8ALsiYuytsg2GH-5

 

選擇 gitlab api token,點擊測試連接,出現 Success,表示成功。

 

 點擊最下面的保存

 

配置Git插件

點擊 Manage Jenkins --> Configure System -->配置 -->Git plugin

 

設置Git插件的全局配置,然后點擊最下面的保存。

 

四、創建一個Jenkins Job

在jenkins里,一個任務叫做一個job。一般我們的項目會有多個分支,比如開發分支和產品分支,我們可以對每一個分支都新建一個job,比如,我們對開發分支創建一個測試的job,每次有代碼提交就自動運行一次測試,對產品分支創建一個打包的job,每次有代碼提交就運行打包任務。

不過在這里,我們只是單純的創建一個job,來演示jenkins自動運行任務的過程。

 

首先,點擊 新建Item,item name”可以隨便起,然后點擊“構建一個自由風格的軟件項目”,點擊Ok

至此,創建一個Job成功了

 

由於 jenkins 服務器的ssh秘鑰,已經添加到gitlab上面了。那么就可以進行下一步了!

 

配置Job的源碼管理

選擇“源碼管理”,選擇“Git”,然后去GitLab中復制項目地址,粘貼到“Repository URL”,然后點擊“credentials”后面的“Add”按鈕

 

類型,選擇 SSH Username with private key

Username 填 root

PrivateKey 選擇Enter directly,點擊add

 

登錄到jenkins 服務器,查看私鑰

cat /root/.ssh/id_rsa

 

將內容復制到網頁上面,點擊添加

 

在“credentials”里選擇我們剛剛創建的認證方式:root

 

如果沒報錯,說明成功了,點擊頁面底部的“apply”。如果出錯了,會在“Repository URL”和“Credentials”之間顯示紅色的錯誤信息。

jenkins job默認對master分支進行構建,你也可以自定義分支。這要求你的Gitlab代碼倉庫中要存在這個分支,一般來說,就是要向代碼倉庫提交一次更改,請 自行完成(Gitlab項目剛創建時是空的,一個分支也沒有,這樣的話,自動構建時會出錯)

 

 

配置Job的構建觸發器

選擇“構建觸發器”,勾選“Pull SCM”,這個選項會每隔一段時間檢查一下GitLab倉庫中代碼是否有更新,有的話就執行構建操作。日程表如何設置,在這個輸入框下面有說明。

 

擴展閱讀:

常見構建觸發器、:

  • Build after other projects are built 當另一個構建任務完成之后觸發
  • Build periodically 周期性的觸發
  • Build when a change is pushed to GitLab. GitLab CI Service URL: http://191.8.2.112:12000/project/test-go-dev 當代碼有更新的時候觸發,通過GitLab CI
  • GitHub hook trigger for GITScm polling 通過Github鈎子觸發
  • Poll SCM 定期檢查代碼有無更新,有更新時觸發

這只是個人理解,具體怎么樣大家可以試試,Poll SCM方式我是試過的。

配置Job的構建腳本

在build欄目里,選擇“jenkins execute shell”,然后輸入你項目的構建命令(這依賴於你的項目,如Maven的maven build,gulp的gulp xxx 等等)

 

這里我輸入一段測試命令,表示將git項目的代碼復制到/tmp/test

\cp -r $WORKSPACE /tmp/test

 

點擊 可用的環境變量列表,就可以看到很多變量

 

其中 WORKSPACE 表示,下載git項目后的路徑。

由於git項目為test,因此路徑為:/var/lib/jenkins/workspace/test

點擊保存

 

點擊 Build Now,點擊下面的構建過程

 

點擊控制台輸出,就可以看到完整的cp命令

 

登錄到jenkins服務器,查看/tmp/test目錄,是否有文件存在。

root@ubuntu:~# ll /tmp/test/
總用量 16
drwxr-xr-x  3 jenkins jenkins 4096 8月  28 18:27 ./
drwxrwxrwt 14 root    root    4096 8月  28 18:29 ../
drwxr-xr-x  8 jenkins jenkins 4096 8月  28 18:27 .git/
-rw-r--r--  1 jenkins jenkins   16 8月  28 18:27 README.md

 

 

本文參考鏈接:

https://blog.csdn.net/ruangong1203/article/details/73065410

https://blog.csdn.net/zangxueyuan88/article/details/81195666

 


免責聲明!

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



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