Jenkins+Maven+Gitlab+Nexus持續集成環境搭建


 

1、軟件及服務介紹

Jenkins:jenkins是實現代碼自動化流程上線的工具,Jenkins是一個獨立的開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重復的工作,旨在提供一個開放易用的軟件平台,使軟件的持續集成變成可能。前身是Hudson是一個可擴展的持續集成引擎。可用於自動化各種任務,如構建,測試和部署軟件。Jenkins可以通過本機系統包Docker安裝,甚至可以通過安裝Java Runtime Environment的任何機器獨立運行

Maven:Maven是一個項目管理和綜合工具。Maven提供了開發人員構建一個完整的生命周期框架。開發團隊可以自動完成項目的基礎工具建設,Maven使用標准的目錄結構和默認構建生命周期。在多個開發團隊環境時,Maven可以設置按標准在非常短的時間里完成配置工作。由於大部分項目的設置都很簡單,並且可重復使用,Maven讓開發人員的工作更輕松,同時創建報表,檢查,構建和測試自動化設置。

Gitlab:GitLab 是一個用於倉庫管理系統的開源項目,使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。可通過Web界面進行訪問公開的或者私人項目。它擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員可以利用內置的簡單聊天程序(Wall)進行交流。它還提供一個代碼片段收集功能可以輕松實現代碼復用。

Nexus:maven的倉庫只有兩大類:1.本地倉庫 2.遠程倉庫,在遠程倉庫中又分成了3種:中央倉庫、私服、其它公共庫。

私服是一種特殊的遠程倉庫,它是架設在局域網內的倉庫服務,私服代理廣域網上的遠程倉庫,供局域網內的Maven用戶使用。當Maven需要下載構件的時候,它從私服請求,如果私服上不存在該構件,則從外部的遠程倉庫下載,緩存在私服上之后,再為Maven的下載請求提供服務。我們還可以把一些無法從外部倉庫下載到的構件上傳到私服上

私服的特點:

節省自己的外網帶寬:減少重復請求造成的外網帶寬消耗

加速Maven構件:如果項目配置了很多外部遠程倉庫的時候,構建速度就會大大降低

部署第三方構件:有些構件無法從外部倉庫獲得的時候,我們可以把這些構件部署到內部倉庫(私服)中,供內部maven項目使用

提高穩定性,增強控制:Internet不穩定的時候,maven構建也會變的不穩定,一些私服軟件還提供了其他的功能

降低中央倉庫的負荷:maven中央倉庫被請求的數量是巨大的,配置私服也可以大大降低中央倉庫的壓力

因此在實際的項目中通常使用私服來間接訪問中央倉庫,項目通常不直接訪問中央倉庫

Nexus並不是必須的,本次部署使用maven中央倉庫,不演示nexus,有需求的時候在搭建,這里的需求主要看開發人員的需求

 

2、環境搭建

環境說明

系統版本     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/        #啟動完成后jenkinswar包被解壓為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

 

3、使用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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM