docker+jenkins+tomcat 自動更新代碼部署測試環境

寫在前面:此文記錄只爲本公司測試環境搭建,可作參考,實際以公司項目爲準。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截圖(步驟可註釋跳過)

 

  

相關文章
相關標籤/搜索