一、軟件及服務介紹 html
Jenkins:jenkins是實現代碼自動化流程上線的工具,Jenkins是一個獨立的開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工做,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。前身是Hudson是一個可擴展的持續集成引擎。可用於自動化各類任務,如構建,測試和部署軟件。Jenkins能夠經過本機系統包Docker安裝,甚至能夠經過安裝Java Runtime Environment的任何機器獨立運行 java
Maven:Maven是一個項目管理和綜合工具。Maven提供了開發人員構建一個完整的生命週期框架。開發團隊能夠自動完成項目的基礎工具建設,Maven使用標準的目錄結構和默認構建生命週期。在多個開發團隊環境時,Maven能夠設置按標準在很是短的時間裏完成配置工做。因爲大部分項目的設置都很簡單,而且可重複使用,Maven讓開發人員的工做更輕鬆,同時建立報表,檢查,構建和測試自動化設置。 mysql
Gitlab:GitLab 是一個用於倉庫管理系統的開源項目,使用Git做爲代碼管理工具,並在此基礎上搭建起來的web服務。可經過Web界面進行訪問公開的或者私人項目。它擁有與Github相似的功能,可以瀏覽源代碼,管理缺陷和註釋。能夠管理團隊對倉庫的訪問,它很是易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員能夠利用內置的簡單聊天程序(Wall)進行交流。它還提供一個代碼片斷收集功能能夠輕鬆實現代碼複用。 linux
Nexus:maven的倉庫只有兩大類:1.本地倉庫 2.遠程倉庫,在遠程倉庫中又分紅了3種:中央倉庫、私服、其它公共庫。 git
私服是一種特殊的遠程倉庫,它是架設在局域網內的倉庫服務,私服代理廣域網上的遠程倉庫,供局域網內的Maven用戶使用。當Maven須要下載構件的時候,它從私服請求,若是私服上不存在該構件,則從外部的遠程倉庫下載,緩存在私服上以後,再爲Maven的下載請求提供服務。咱們還能夠把一些沒法從外部倉庫下載到的構件上傳到私服上 web
私服的特色: sql
節省本身的外網帶寬:減小重複請求形成的外網帶寬消耗 數據庫
加速Maven構件:若是項目配置了不少外部遠程倉庫的時候,構建速度就會大大下降 apache
部署第三方構件:有些構件沒法從外部倉庫得到的時候,咱們能夠把這些構件部署到內部倉庫(私服)中,供內部maven項目使用 json
提升穩定性,加強控制:Internet不穩定的時候,maven構建也會變的不穩定,一些私服軟件還提供了其餘的功能
下降中央倉庫的負荷:maven中央倉庫被請求的數量是巨大的,配置私服也能夠大大下降中央倉庫的壓力
所以在實際的項目中一般使用私服來間接訪問中央倉庫,項目一般不直接訪問中央倉庫
Nexus並非必須的,本次部署使用maven中央倉庫,不演示nexus,有需求的時候在搭建,這裏的需求主要看開發人員的需求
二、環境搭建
環境說明
系統版本 CentOS 7.2 x86_64
軟件版本 jdk-8u171-linux-x64
apache-tomcat-8.0.52
apache-maven-3.5.4
jenkins-2.129
Gitlab-ce-10.8.4(部署在其餘機器)
jdk下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
tomcat下載地址:https://tomcat.apache.org/download-80.cgi
maven下載地址:http://maven.apache.org/download.cgi
jenkins下載地址:http://mirrors.jenkins-ci.org/war/2.129/
https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.129/(清華鏡像源)
gitlab的安裝部署見前面的博文:
全部軟件的安裝包在部署前均下載到了本地
[root@jenkins ~]# mkdir /application
[root@jenkins ~]# mkdir -p /service/tools
[root@jenkins ~]# cd /service/tools
上傳所需軟件包
[root@jenkins tools]# ls
apache-maven-3.5.4-bin.tar.gz apache-tomcat-8.0.52.tar.gz jdk-8u171-linux-x64.tar.gz jenkins.war
2.1 安裝jdk
[root@jenkins tools]# tar xf jdk-8u171-linux-x64.tar.gz -C /application/
[root@jenkins tools]# ln -s /application/jdk1.8.0_171 /application/jdk
[root@jenkins tools]# vim /etc/profile
export JAVA_HOME=/application/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@jenkins tools]# source /etc/profile
[root@jenkins tools]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
2.2 安裝tomcat
[root@jenkins tools]# tar xf apache-tomcat-8.0.52.tar.gz -C /application/
[root@jenkins tools]# ln -s /application/apache-tomcat-8.0.52 /application/tomcat
[root@jenkins tools]# ll /application/
總用量 4
drwxr-xr-x 9 root root 149 6月 28 21:03 apache-tomcat-8.0.52
lrwxrwxrwx 1 root root 25 6月 28 20:57 jdk -> /application/jdk1.8.0_171
drwxr-xr-x 8 10 143 4096 3月 29 08:18 jdk1.8.0_171
lrwxrwxrwx 1 root root 33 6月 28 21:03 tomcat -> /application/apache-tomcat-8.0.52
2.3 安裝jenkins
Jenkins的安裝分爲兩種方式:rpm包安裝和war包安裝,war包依賴於tomcat
[root@jenkins tools]# mv jenkins.war /application/tomcat/webapps/
[root@jenkins tools]# ls /application/tomcat/webapps/
docs examples host-manager jenkins.war manager ROOT
[root@jenkins tools]# /application/tomcat/bin/startup.sh
[root@jenkins tools]# netstat -lntup|grep java
tcp6 0 0 :::8009 :::* LISTEN 2356/java
tcp6 0 0 :::8080 :::* LISTEN 2356/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2356/java
udp6 0 0 :::5353 :::* 2356/java
udp6 0 0 :::33848 :::* 2356/java
[root@jenkins tools]# ls /application/tomcat/webapps/ #啓動完成後jenkins的war包被解壓爲jenkins文件
docs examples host-manager jenkins jenkins.war manager ROOT
瀏覽器http://10.0.0.8:8080/jenkins訪問web界面繼續安裝
根據提示在日誌或者/root/.jenkins/secrets/initialAdminPassword文件中找到密碼輸入解鎖jenkins
若是出現如下錯誤提示,多數狀況是因爲網絡緣由,能夠嘗試修改jenkins配置文件
[root@jenkins tools]# vim ~/.jenkins/hudson.model.UpdateCenter.xml
將url地址https://updates.jenkins.io/update-center.json修改成清華鏡像源的地址
https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,修改後重啓tomcat並刷新瀏覽器
[root@jenkins tools]# /application/tomcat/bin/shutdown.sh
[root@jenkins tools]# /application/tomcat/bin/startup.sh
點擊安裝推薦的插件,等待插件安裝完成,若是插件安裝失敗,不斷嘗試點擊重試直到全部插件安裝完成,這種狀況緣由在於網絡問題,若是這裏的插件安裝不成功選擇跳過,在後續步驟中會遇到麻煩,須要手動去選擇插件安裝
插件安裝完成設置管理員的帳號密碼等信息
登陸jenkins,jenkins安裝完成
2.4 安裝maven
[root@jenkins tools]# tar xf apache-maven-3.5.4-bin.tar.gz -C /application/
[root@jenkins tools]# ln -s /application/apache-maven-3.5.4 /application/maven
[root@jenkins tools]# vim /etc/profile
export MAVEN_HOME=/application/maven
export PATH=${MAVEN_HOME}/bin:${PATH}
[root@jenkins tools]# source /etc/profile
[root@jenkins tools]# which mvn
/application/maven/bin/mvn
[root@jenkins tools]# mvn -version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /application/maven
Java version: 1.8.0_171, vendor: Oracle Corporation, runtime: /application/jdk1.8.0_171/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
若是使用自建的私服,修改/application/maven/conf/settings.xml配置文件添加mirrors的地址,如添加阿里雲的maven倉庫地址,這樣在後面maven編譯的時候就能提升速度
[root@jenkins tools]# vim /application/maven/conf/settings.xml
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
2.5 jenkins配置
系統管理——>管理插件——>可選插件——>過濾
搜索maven插件Maven Integration plugin並等待成功安裝,不能安裝請重試,或者手動下載插件上傳安裝
配置jenkins全局工具配置
系統管理——>全局工具配置,配置jdk和maven,配置爲本身安裝的jdk和maven
三、使用jenkins構建項目
演示以最簡單的方式構建一個項目
例如從自建的gitlab上構建一個jeesns的項目,新建任務
輸入項目描述,設置構建參數
源碼管理選擇git,須要填寫url及選擇密鑰
Repository URL填寫自建的gitlab上的項目地址即:
填寫以後以下所示,出現這個提示是因爲jenkins所在機器沒有與gitlab服務器認證,須要生成密鑰並將公鑰添加至gitlab上,生成密鑰和gitlab上添加密鑰能夠參照前面部署gitlab的文章
Credentials選項中點擊add或者直接在主面板中找到憑據管理並添加憑據,將上面生成的私鑰粘貼到這裏
回到項目參數配置源碼管理界面,下拉選擇相應的key,選擇源碼庫瀏覽器爲gitlab並填寫http地址(gitlab上找到該地址)及項目名稱
對於此項目,整個項目構建並自動上線的步驟爲:拉取gitlab上面的java項目代碼——>改配置文件——>導入數據庫——>使用maven插件編譯java項目——> 執行腳本(推送新編譯好的war包文件到tomcat服務器,這裏使用jenkins本機服務器)
上述步驟要根據具體項目的實現構建步驟而定,固然很大一部分也是開發人員所決定的,對於這個項目的部署步驟能夠參考官方項目地址https://gitee.com/zchuanzhao/jeesns
所以,須要選擇並輸入在項目構建以前須要執行的腳本(命令),該項目要實現自動上線還須要作的是修改項目的配置文件中的數據庫用戶名及密碼,導入數據庫文件(導入前須要創庫受權),腳本中的路徑須要在jenkins相應路徑中找到得出
sed -i 's#jdbc.user=root#jdbc.user=jeesns#g' /root/.jenkins/workspace/jeesns/jeesns-web/src/main/resources/jeesns.properties
sed -i 's#jdbc.password=root#jdbc.password=123456#g' /root/.jenkins/workspace/jeesns/jeesns-web/src/main/resources/jeesns.properties
/usr/bin/mysql -ujeesns -p123456 jeesns </root/.jenkins/workspace/jeesns/jeesns-web/database/jeesns.sql
填寫項目構建參數(與開發人員有關),基礎參數爲clean package
填寫項目構建以後的腳本(命令)
cp /root/.jenkins/workspace/jeesns/jeesns-web/target/jeesns-web.war /application/tomcat/webapps
上述步驟及參數爲jekins自動編譯並上線一個項目的基礎配置,根據項目環境須要能夠進行進一步配置,如今要作的就是點擊保存,並當即構建項目
查看控制檯輸出,等待構建完成
構建完成後便可訪問網站,項目自動上線
更多jekins的知識能夠參考https://www.w3cschool.cn/jenkins/