一、概述
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