GitLab+Jenkins持續集成

1、概述

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服務器

 

2、使用GitLab建立一個項目

點擊 Create a projectapp

 

建立 test 項目ssh

 

添加 README 文件maven

 

輸入內容,點擊肯定

 

 

效果以下:

 

建立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 用戶,這樣就能夠訪問項目了

 

 

3、 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插件的全局配置,而後點擊最下面的保存。

 

4、建立一個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

 

 

本文參考連接:

http://www.javashuo.com/article/p-bmhvoegt-ka.html

http://www.javashuo.com/article/p-elkxsmbm-eb.html

相關文章
相關標籤/搜索