寫在前面:此文記錄只爲本公司測試環境搭建,可作參考,實際以公司項目爲準。java
公司環境:Debian系統環境mysql
服務器啓動:tomcat +Mysql+jdk1.8.0_202 + maven + warlinux
項目存放:svnweb
容器部署:dockersql
集成:Jenkinsdocker
建立Jenkinsci用戶,並加入sudo組apache
useradd -m jenkinsciubuntu
password jenkinsci ******瀏覽器
adduser jenkinsci sudotomcat
安裝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截圖(步驟可註釋跳過)