寫在前面:此文記錄只為本公司測試環境搭建,可做參考,實際以公司項目為准。
公司環境:Debian系統環境
服務器啟動:tomcat +Mysql+jdk1.8.0_202 + maven + war
項目存放:svn
容器部署:docker
集成:Jenkins
創建Jenkinsci用戶,並加入sudo組
useradd -m jenkinsci
password jenkinsci ******
adduser jenkinsci sudo
安裝Mysql
這里采用的是docker鏡像方式安裝
准備工作:創建MySQL容器將使用的數據綁定目錄
mkdir -p mysql57/var/lib/mysql
接取鏡像:
sudo docker pull mysql:5.7.25
運行MySQL docker:
sudo docker run -d -p 3306:3306 --name mysql \
-e "TZ = Asia\Shanghai" \
-e "MySQL_ROOT_PASSWORD = ****** " \
-v $HOME/mysql57/var/lib/mysql : /var/lib/mysql \
mysql:5.7.25
-e 向容器傳遞環境變量TZ,設置時區,前提有默認時區( dpkg-reconfigure tzdata 選擇時區設置 )
-e 令root用戶的初始口令為******
MySQL docker啟停命令:
sudo docker mysql start
sudo docker mysql stop
安裝JDK8
在宿主機Debian系統中安裝JDK8
#先加載安裝包 software-properties-common以便使用add-apt-repository命令
sudo apt-get install software-properties-common
sudo add-apt-repository "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main"
sudo apt-get update
sudo apt-get install oracle-java8-installer
#確認一下安裝是否成功
javac -version
安裝Tomcat
步驟:
1. 創建tomcat組
2. 創建tomcat用戶,屬於tomcat組
3. 下載和安裝Tomcat8,安裝目錄 /opt/tomcat,命令:
sudo tar xzvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1
4. 更新/opt/tomcat訪問許可
5. 修改Tomcat8配置:
Tomcat端口 7080, 7443, 7005, 7009(自行配置未占用可用端口)
tomcat-users.xml用戶配置,內容如下:
<role rolename="tomcat"/>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="******" roles="tomcat,admin-gui,manager-gui,manager-script"/>
運行Tomcat:
sudo /opt/tomcat/bin/startup.sh
停止Tomcat:
sudo /opt/tomcat/bin/shutdown.sh
安裝Jenkins
新建子目錄:
mkdir -p jenkins/.m2
mkdir -p jenkins/jenkins_home
以Docker鏡像方式安裝Jenkins,下載鏡像並運行:
sudo docker pull jenkins/jenkins:lts
sudo docker run -u root -d -p 6666:8888 -p 50000:50000 --name jenkins \ #6666,8888分別為容器內外映射端口號
-e "TZ=Asia/Shanghai" \
-v $HOME/jenkins/jenkins_home:/var/jenkins_home \
-v $HOME/jenkins/.m2:/root/.m2 \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:lts
說明:命令帶了3個 -v 參數,這是綁定加載,把容器內的目錄映射到宿主機目錄,以便容器刪除時數據可保留。
參數 -e 向容器傳遞了環境變量TZ,以設置時區。
訪問jenkins容器的命令:
sudo docker exec -it jenkins bash
查看jenkins容器日志:
sudo docker logs jenkins
在日志中查找自動生成的初始管理員密碼,復制出來:
安裝后設置: 打開瀏覽器,
訪問 http://持續集成服務器IP:6666
在首頁輸入初始管理員密碼,繼續
下一步安裝插件,簡單起見就安裝建議插件 (Install suggested plugins)
然后創建管理賬號 admin/******。
配置Jenkins
Jenkins的編譯環境配置主要是Oracle JDK 8 (update 202)和Maven 3.6.0。
安裝更多插件
在瀏覽器上打開Manage Jenkins - Manage Jenkins,切換到Available標簽,
安裝如下插件:
Ø Blue Ocean插件
Ø warning-ng插件,插件的顯示名稱為Warnings Next Generation Plugin
Ø Localization: Chinese (Simplified) 插件
Ø Pipeline Utility Steps插件
Ø Deploy to container插件
插件安裝后重啟Jenkins。
工具配置
准備:復制Maven設置文件 把Maven全局設置文件復制到/home/jenkinsci/jenkins/.m2 目錄。(settings.xml文件)
准備:復制JDK安裝文件 把JDK安裝文件jdk-8u202-linux-x64.tar.gz復制到/home/jenkinsci/jenkins/jenkins_home 目錄。
全局工具配置 (Global Tool Configuration)
在瀏覽器上打開Manage Jenkins – Global Tool Configuration:
Maven配置
默認全局 settings 提供: 文件系統中的全局 settings 文件
文件路徑: /root/.m2
JDK JDK installations,
Name: jdk8
勾選Install automatically
再Add Installer - Extract *.zip/*.tar.gz
Download URL for binary archive: file:/var/jenkins_home/jdk-8u202-linux-x64.tar.gz
Subdirectory of extracted archive: jdk1.8.0_202
特別注意:Subdirectory 內容必填,否則編譯 時PATH的JDK/bin 路徑會錯,以致找不到java程序!
Maven
Maven installations,
Name: Maven 3.6.0 勾選Install automatically,並在Install from Apache下拉框中選擇3.6.0。
系統設置 (Configure System)
在瀏覽器上打開Manage Jenkins – Configure System,填寫如下內容:
Global properties 勾選Environment variables
添加屬性JAVA_HOME: /var/jenkins_home/tools/hudson.model.JDK/jdk8/jdk1.8.0_202/
添加屬性TOMCAT_DEPLOY_URL: http://IP:端口/manager/text/deploy?update=true&path= #(要設置的服務器IP和端口)
Locale
Default Language: zh_CN
Subversion
Subversion Workspace Version: 1.8
憑據(Credential)
添加tomcat用戶憑據,
輸入/選擇:
Scope: Global
Username: tomcat
Password: ******
ID: tomcat-user
注意,上面輸入的Username和Password要與“安裝Tomcat”一節的配置相同。
添加SVN用戶憑據(有項目svn權限的用戶名密碼)
Scope: Global
Username:***
Password: ***
ID: svn-user
管理用戶
在瀏覽器上打開系統管理 – 管理用戶:
新建Jenkins用戶,分配項目權限。
創建流水線任務
之后就是使用Jenkins新建項目拉取svn項目代碼自動編譯部署項目了
在開始界面上,新建任務,再輸入任務名稱,選擇多分支流水線,點擊確定。圖示如下:
接下來,填寫任務參數:
General – 顯示名稱:多分支例子項目
分支源 (Branch Sources),點擊“增加源”,選擇 Subversion,輸入:
Project Repository Base: http://IP/svn/test/
Credentials: <SVN用戶憑據>
Include branches: trunk/**/*,branches/*,branches/**/*,tags/*,sandbox/*
注意,Include branches填寫內容根據例子項目test的實際目錄結構而來。
任務參數配置后,Jenkins會自動進行初次掃描,執行任務。首次執行時會下載項目依賴JAR,比較耗時,多等一會兒。
初次掃描和任務執行后,查看項目情況如下,有3個分支,點擊“圖例”鏈接會打開圖標說明幫助頁:
運行流水線任務
點擊項目分支,進入頁面,再點擊“立即構建”鏈接,開始運行流水線任務。頁面會即時顯示任務運行情況。要查看詳細情況,可點擊打開構建歷史下面的條目。
參考:Jenkins官方文檔 (中文版)
查看CheckStyle報告
打開項目的構建歷史條目,再打開CheckStyle Warnings,查看CheckStyle報告。在報告頁面下方有詳情 (Details),可按不同維度查看檢查結果,如按包(packages)、文件 (Files)、類型(Types)或問題(Issues)。
下載制品
項目正常編譯后,要手工下載WAR包,打開構建歷史條目,點擊Workspaces - <分支路徑>:
進入Workspace,打開target子目錄,點擊WAR包下載:
自動部署
例子項目test的測試分支的Jenkinsfile腳本配置了Deploy階段,用於把制品WAR包自動部署到Tomcat。Deploy階段的腳本片段如下:
腳本中的部分變量在“配置Jenkins – 工具配置”章節中有定義。變量APP是擬部署應用的名稱,在部署后使用該名稱訪問應用。如上面的腳本片段指明了部署應用名為app,則部署后訪問地址為 http://Tomcat測試服務器/app 。
Jenkinsfile截圖(步驟可注釋跳過)