前言
因今年公司新產品線較多,為了降低耦合,達到業務分離、重用,提高內部開發效率的目的,采用了基於服務組件、前后端分離的架構體系。與之前傳統單應用架構相比,系統部署、配置更加復雜,為了能夠頻繁地將軟件的最新版本,及時、持續地交付給測試團隊及質量控制團隊,以供評審,所以引入持續集成工具Jenkins,從而實現公司新產品持續集成,自動化部署。
環境准備
- 操作系統:Windows10
- Java環境:下載 jdk-1.8.0-131-X64.zip,配置Java環境變量(參考:http://jingyan.baidu.com/article/02027811629b941bcc9ce521.html)
- Maven環境:下載apache-maven-3.5.2-bin.zip,配置Maven環境變量(參考:http://wiki.jikexueyuan.com/project/maven/environment-setup.html)
- Tomcat環境:下載apache-tomcat-8.5.20-windows-x64.zip,配置Tomcat環境變量(參考:http://jingyan.baidu.com/article/8065f87fcc0f182330249841.html)
- Jenkins環境:下載Jenkins2.73.2 for Windows
安裝Jenkins
-
運行下載好的Jenkins安裝包jenkins.msi,選擇安裝路徑,點擊”安裝“,等待安裝完成;
-
安裝完成以后,會自動啟動瀏覽器,跳轉到Jenkins登錄頁面。第一次啟動Jenkins,出於安全考慮,Jenkins會生產一個隨機口令文件,表單中會給出管理員口令文件存放的位置,通過Windows+R,調出運行窗口,將存放口令的文件路徑粘貼到輸入框,點擊回車,快速打開文件,將文件中的口令輸入到表單中,點“Continue”繼續;
-
安裝Jenkins官方建議的默認插件;
-
創建第一個管理員用戶,創建完成以后,就可以用這個用戶登錄到Jenkins系統中。
安裝插件
下面介紹實際部署中所用到的幾個插件,安裝方法:系統管理->管理插件。
- 安裝Deploy to container Plugin(自動化部署插件)
- 安裝Maven Integration Plugin(Maven集成插件)
- 安裝Publish Over SSH Plugin(SSH遠程發布插件)
注意:因插件安裝以后,需要重啟Jenkins才能夠使用。所以在安裝插件時,可以勾選安裝完成后重啟Jenkins。如果不小心忘記勾選,也沒有關系,可以在瀏覽器網址端口后面輸入/restart來重啟Jenkins,其它的命令,可參考系統管理->Jenkins CLI。
系統配置
插件安裝完成以后,我們需要對系統進行配置。
- 首先進行全局配置,系統管理->系統設置:
Jenkins Location配置
Jenkins URL項保持默認即可,填寫系統管理員郵件地址。(注意:這個如果不填寫的是發送不了郵件的,測試郵件發送時會報:“553 Mail from must equal authorized user”錯誤。)
郵件通知配置
填寫“SMTP服務器”、“用戶默認郵件后綴”,然后點“高級”,勾選“使用SMTP認證”,填寫郵箱用戶名、密碼和SMTP端口,接着勾選“通過發送測試郵件測試配置”,填寫接收郵件的郵箱,點擊“測試”,出現“Email was successfully sent”表明郵件通知配置成功。
SSH remote hosts配置
SSH遠程主機配置,主要用來通過SSH方式遠程發布,在后面的章節會詳細介紹。
Publish over SSH配置
主要是用來通過SSH方式遠程發布,在后面的章節會詳細介紹。
- 然后,進入系統設置->Global Tool Configuration:
SonarQube servers配置
Maven配置
配置Maven主要是配置Maven的settings.xml文件,Jenkins在構建Maven項目時需要依靠該配置文件來執行Maven,其配置如下:
JDK配置
SonarQube Scanner配置
新建項目
新建一個Maven項目
項目配置
###源碼管理
構建觸發器
Jenkins提供了6中構建觸發器,分別是:
- build whenever a snapshot dependency is built ,當job依賴的快照版本被build時,執行本job;
- 觸發遠程構建 (例如,使用腳本);
- build after other projects are built 當本job依賴的job被build時,執行本job;
- build periodically 隔一段時間build一次,不管版本庫代碼是否發生變化,通常不會采用此種方式;
- GitHub hook trigger for GITScm polling 通過Github鈎子觸發;
- poll scm 隔一段時間比較一次源代碼,如果發生變更,那么久build。否則,不進行build,通常采用這種方式。
構建(Build)
調用Maven “clean install”命令。
增加一個構建后步驟(自動部署)
因在Windows環境下部署,所以選擇Execute Windows batch command。
自動部署的思路:設置全局變量(項目名稱,構建新包路徑,配置文件路徑,Tomcat路徑等)->關閉Tomcat->刪除Tomcat中舊版本包->拷貝新包到Tomcat應用目錄->啟動Tomcat(解壓包)->關閉Tomcat->替換配置文件->刪除War包->啟動Tomcat,自己寫的腳本代碼如下:
@echo off
rem 設置全局變量
set prj_name=estate set package_path=D:\AutoDeployment\Package set config_path=D:\AutoDeployment\config set command_path=D:\AutoDeployment\command set tomcat_home=D:\tomcat\apache-tomcat-7.0.59 set startup_command=%tomcat_home%\bin\startup.bat set shutdown_command=%tomcat_home%\bin\shutdown.bat rem 關閉tomcat call %shutdown_command% rem 暫停10s ping -n 10 127.0.0.1 rem 刪除舊包目錄 rd /s /q %tomcat_home%\webapps\%prj_name% rem 新包重命名 d: cd D:\AutoDeployment\Package\estate ren register-web.war %prj_name%.war rem 拷貝新包到發布目錄 copy %prj_name%.war %tomcat_home%\webapps rem 啟動tomcat call %startup_command% rem 暫停10s ping -n 10 127.0.0.1 rem 關閉tomcat call %shutdown_command% rem 刪除war包 rd /s /q %tomcat_home%\webapps\%prj_name%.war rem 替換配置文件 copy %config_path%\%prj_name% %tomcat_home%\webapps\%prj_name%\WEB-INF\classes rem 啟動tomcat call %startup_command% rem 關閉窗口 exit
構建設置(郵件通知)
構建測試
點擊“立即”構建,maven 打包成功,執行腳本無誤以后,整個自動化部署就成功了。
結語
按照以上步驟,可以成功完成自動化部署環境搭建。網上很多教程,在“構建后步驟”這一步直接貼出Execute shell,且未說明是在什么操作系統環境下,注意直接拿來用在Windows環境下面是不行的。Jenkins軟件幫助功能做的非常強大,在每一項配置后面,都會有一個幫助菜單,所以當你不確定該項如何填寫時,這個菜單是最好的參考工具。
https://my.oschina.net/lsjcoder/blog/1573648