GitLab是一個代碼倉庫,用來管理代碼。Jenkins是一個自動化服務器,能夠運行各類自動化構建、測試或部署任務。因此這二者結合起來,就能夠實現開發者提交代碼到GitLab,Jenkins以必定頻率自動運行測試、構建和部署的任務,幫組開發團隊更高效的集成和發佈代碼。html
下面是我最近安裝GitLab+Jenkins環境的一個過程,記錄下來,以備往後參考。git
另外,這篇文章雖然很長,講得很瑣碎,可是仍有未能描述清楚的地方,若是按照這篇文章未能搭建成功,請耐心分析,也可從官方文檔 找找靈感,繼續下去總會成功的。shell
操做系統 | 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 安裝教程,請參考連接:gulp
http://www.javashuo.com/article/p-clpekofp-ky.htmlubuntu
GitLab 安裝教程,請參考連接:api
http://www.javashuo.com/article/p-qijwneax-kg.html服務器
點擊 Create a projectapp
建立 test 項目ssh
添加 README 文件maven
輸入內容,點擊肯定
效果以下:
點擊扳手按鈕
點擊 User
添加 jenkins 用戶,點擊最下面的Create user按鈕。
點擊編輯
修改密碼,這裏我定義的是 jenkins@1234
點擊 Impersonate ,表示冒充jenkins 用戶
點擊設置
點擊 ssh keys
登陸到jenkins服務器,生成祕鑰
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
查看公鑰
cat /root/.ssh/id_rsa.pub
將公鑰內容複製到網頁,點擊添加祕鑰
複製token,待會 jenkins 設置時,會用到。Zzis8ALsiYuytsg2GH-5
點擊退出
從新登陸root用戶,點擊test
點擊設置-成員
添加jenkins 用戶,這樣就能夠訪問項目了
因爲 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,表示成功。
點擊最下面的保存
點擊 Manage Jenkins --> Configure System -->配置 -->Git plugin
設置Git插件的全局配置,而後點擊最下面的保存。
在jenkins裏,一個任務叫作一個job。通常咱們的項目會有多個分支,好比開發分支和產品分支,咱們能夠對每個分支都新建一個job,好比,咱們對開發分支建立一個測試的job,每次有代碼提交就自動運行一次測試,對產品分支建立一個打包的job,每次有代碼提交就運行打包任務。
不過在這裏,咱們只是單純的建立一個job,來演示jenkins自動運行任務的過程。
首先,點擊 新建Item,item name」能夠隨便起,而後點擊「構建一個自由風格的軟件項目」,點擊Ok
至此,建立一個Job成功了
因爲 jenkins 服務器的ssh祕鑰,已經添加到gitlab上面了。那麼就能夠進行下一步了!
選擇「源碼管理」,選擇「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項目剛建立時是空的,一個分支也沒有,這樣的話,自動構建時會出錯)
選擇「構建觸發器」,勾選「Pull SCM」,這個選項會每隔一段時間檢查一下GitLab倉庫中代碼是否有更新,有的話就執行構建操做。日程表如何設置,在這個輸入框下面有說明。
擴展閱讀:
常見構建觸發器、:
這只是我的理解,具體怎麼樣你們能夠試試,Poll SCM方式我是試過的。
在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
本文參考連接: