Jenkins 實現自動構建與持續集成

* 寫在前面的一段話:
          根據目前的工做須要,以及爲了接下來新產品先後端間更高效的協同,我決定爬一下Jenkins的坑。本文經過git鉤子+Jenkins實現了,本地git push代碼,Jenkins會自動響應並拉取碼雲上最新的代碼值服務器上,使得本地提交代碼時,線上可以同步的更新代碼,省去了手動更新服務器上代碼的重複工做。前端


所需工具

  • 服務器本文用的是 CentOS 7.2 64位)
  • Jenkins
  • 碼雲(也能夠是github、gitlab等)

Jenkins 是什麼?能作什麼?

Jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。Jenkins是基於Java開發的一種持續集成工具,用於監控持續重複的工做,功能包括:
一、持續的軟件版本發佈/測試項目。
二、監控外部調用執行的工做。

1、安裝JDK

一、在安裝Jenkins以前,須要先安裝JDK及配置系統環境變量,由於Jenkins是基於JAVA的。java

下載JDK8安裝包並上傳至服務器,在安裝以前建議先檢查下是否安裝過JDK,由於Jenkins最新的2.x版本是基於JDK8的,經過下面命令能夠查詢node

# rpm -qa | grep java

若是有,會出現已安裝的JDK列表。執行下面命令依次卸載便可git

# rpm -e --nodeps <列表裏各項>

二、安裝JDK8github

# rpm -ivh <下載的安裝包名稱>

三、檢查JAVA版本web

# java -version

四、配置環境變量vim

打開配置文件後端

# vim /etc/profile

按i鍵能夠進入編輯模式,按pagedown翻到最後,添加上以下配置api

export JAVA_HOME=<JDK安裝的路徑>
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

按Esc退出編輯模式,並輸入下面命令保存並強制退出瀏覽器

:wq!

從新應用修改後的配置文件

# source /etc/profile

PS:能夠打印出$PATH變量,查看是否配置成功

# echo $PATH

若是輸出了相對應的路徑則說明配置成功,能夠進行下一步了!

2、安裝Jenkins

一、如同安裝JDK,先下載Jenkins的.war安裝包並上傳至服務器(也能夠將Jenkins存儲庫添加到yum repos,並從這裏安裝Jenkins.詳情可見 Jenkins文檔 ),進入Jenkins包所在文件夾執行下面命令啓動Jenkins

# java -jar jenkins.war --httpPort=8090

啓動後用瀏覽器打開http://&lt;ip>:8090,密碼複製粘貼便可,而後按照提示登陸,並安裝推薦的插件...
OK,至此,基礎準備工做已經完成,咱們在服務器上安裝了Jenkins並啓動,而後進行了初始化配置。接下來咱們就須要創建了一個新任務,開始配置咱們須要的功能了。

思考下個人需求:本地push代碼到碼雲,Jenkins自動拉取最新的代碼。因此須要將本地、服務器與碼雲三者間關聯起來

3、實現git鉤子功能

一、在Jenkins插件管理裏找到已安裝插件,如圖

clipboard.png

檢查一下三個插件是否安裝,若是沒有,請安裝

  1. Git plugin
  2. Publish Over SSH
  3. Generic Webhook Trigger Plugin

二、安裝好後重啓Jenkins,接下來即是新建一個任務:

clipboard.png

clipboard.png

clipboard.png

PS: 若是你的項目在拉取代碼後須要其它操做,諸如:安裝依賴、打包等,可在構建、構建後操做裏配置,本文再也不演示

三、配置碼雲的webhooks

clipboard.png

添加 url格式爲 http://&lt;User ID>:<API Token>@<Jenkins IP地址>:端口/generic-webhook-trigger/invoke

其中 userid 和 api token 在jenkins的系統管理-管理用戶-admin-設置裏

clipboard.png

密碼就是jenkins登錄的密碼,填寫完成保存,點擊測試如圖

clipboard.png
出現圖示結果,而且Jenkins裏顯示構建成功

clipboard.png

那麼說明git鉤子已經生效。你也能夠本地push代碼來測試一下!

來看看jenkins拉取的代碼吧,在jenkins workspace裏能夠找到

clipboard.png

4、最終目的

那麼問題來了,我覺得這樣就Everything has been done,打開後竟然是這個樣子

clipboard.png

想一想我最初的目的,自動化的流程是實現了,可是實時同步線上預覽掛掉了,這可真的是不行不可以不能夠的,我決定出去看看外面的世界找找靈感(答案),果真被我找到了

clipboard.png

方法一:在jenkins命令行腳本輸入

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

clipboard.png

方法二:在啓動時指定參數

clipboard.png

# java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar jenkins.war --httpPorrt=8090

運行,若是仍是報錯 記得清下瀏覽器緩存

至此,done!

5、總結下

Jenkins 功能十分強大,在如今前端項目工程化的背景下,能夠替開發和測試人員作不少重複性的工做,本次基於Jenkins作的只是一個銷應用場景下的demo,在公司新產品開發時也能夠基於此進行更多功能的完善!

相關文章
相關標籤/搜索