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

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

標籤(空格分隔): Jenkinshtml


[TOC]java

##1、DevOpslinux

DevOps是「開發」和「運維」的縮寫。
DevOps是一組最佳實踐強調(IT研發、運維、測試)在應用和服務生命週期中的協做和溝通,強調整個組織的合做以及交付和基礎設施變動的自動化,從而實現持續集成、持續部署和持續交付git

DevOps平臺四大模塊web

1.項目管理          (建立項目--->>項目需求)
2.運維平臺          (監控--日誌收集---等)
3.持續交付          (提交完代碼--->自動打包--->構建)
4.代碼託管          (gitlab---->代碼提交)
————————————————————>>DevOps平臺

針對DevOps開源項目docker

1.項目管理---(JIRA非開源可是用的人比較多)、(Redmine使用ruby寫的)
2.代碼託管---(SVN--usvn有web管理界面)、(GitLab)
3.持續交付---(主流Jenkins)、(GitLab gitlab-ci也能夠作交付)
4.運維平臺---(國內的開源運維平臺可能就是騰訊藍鯨)

<br>shell

</br>
<br>apache

</br>vim

##2、服務介紹緩存

不少事情不是光運維就能夠決定的,還須要跟研發交流,我這裏只是演示一個大概的持續交付的流程~

2.1 Jenkins介紹
Jenkins只是一個平臺,真正運做的都是插件。這就是jenkins流行的緣由,由於jenkins什麼插件都有
Hudson是Jenkins的前身,是基於Java開發的一種持續集成工具,用於監控程序重複的工做,Hudson後來被收購,成爲商業版。後來創始人又寫了一個jenkins,jenkins在功能上遠遠超過hudson
<br>

</br>
2.2 Maven 介紹
maven的用途
maven是一個項目構建和管理的工具,提供了幫助管理 構建、文檔、報告、依賴、scms、發佈、分發的方法。能夠方便的編譯代碼、進行依賴管理、管理二進制庫等等。
maven的好處在於能夠將項目過程規範化、自動化、高效化以及強大的可擴展性
利用maven自身及其插件還能夠得到代碼檢查報告、單元測試覆蓋率、實現持續集成等等。

maven的核心概念介紹

Pom
pom是指project object Model。pom是一個xml,在maven2裏爲pom.xml。是maven工做的基礎,在執行task或者goal時,maven會去項目根目錄下讀取pom.xml得到須要的配置信息

pom文件中包含了項目的信息和maven build項目所需的配置

Artifact
這個有點很差解釋,大體說就是一個項目將要產生的文件,能夠是jar文件,源文件,二進制文件,war文件,甚至是pom文件。每一個artifact都由groupId:artifactId:version組成的標識符惟一識別。須要被使用(依賴)的artifact都要放在倉庫(見Repository)中

Repositories
Repositories是用來存儲Artifact的。若是說咱們的項目產生的Artifact是一個個小工具,那麼Repositories就是一個倉庫,裏面有咱們本身建立的工具,也能夠儲存別人造的工具,咱們在項目中須要使用某種工具時,在pom中聲明dependency,編譯代碼時就會根據dependency去下載工具(Artifact),供本身使用。

Build Lifecycle
是指一個項目build的過程。maven的Build
Lifecycle分爲三種,分別爲default(處理項目的部署)、clean(處理項目的清理)、site(處理項目的文檔生成)。他們都包含不一樣的lifecycle。
Build Lifecycle是由phases構成的

....
參考:關於Maven經常使用參數及說明

<br>

</br>
   
2.3 SVN介紹
SVN是近年來崛起的很是優秀的版本管理工具,與CVS管理工具同樣,SVN是一個固態的跨平臺的開源的版本控制系統。SVN版本管理工具管理者隨時間改變的各類數據。這些數據放置在一箇中央資料檔案庫repository中,這個檔案庫很像一個普通的文件服務器或者FTP服務器,可是,與其餘服務器不一樣的是,SVN會備份並記錄每一個文件每一次的修改更新變更。這樣咱們就能夠把任意一個時間點的檔案恢復到想要的某一箇舊的版本,固然也能夠直接瀏覽指定的更新歷史記錄。

本站相關文章
SVN服務實戰應用指南
VisualSVN 遷移至Linux SVN+Apache+ssl集成LDAP

<br>

</br>

2.4 Nexus介紹

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

私服是一種特殊的遠程倉庫,它是架設在局域網內的倉庫服務,私服代理廣域網上的遠程倉庫,供局域網內的Maven用戶使用。當Maven須要下載構件的時候,它從私服請求,若是私服上不存在該構件,則從外部的遠程倉庫下載,緩存在私服上以後,再爲Maven的下載請求提供服務。咱們還能夠把一些沒法從外部倉庫下載到的構件上傳到私服上。

Maven私服的 個特性:

  • [ ] 1.節省本身的外網帶寬:減小重複請求形成的外網帶寬消耗
  • [ ] 2.加速Maven構件:若是項目配置了不少外部遠程倉庫的時候,構建速度就會大大下降
  • [ ] 3.部署第三方構件:有些構件沒法從外部倉庫得到的時候,咱們能夠把這些構件部署到內部倉庫(私服)中,供內部maven項目使用
  • [ ] 4.提升穩定性,加強控制:Internet不穩定的時候,maven構建也會變的不穩定,一些私服軟件還提供了其餘的功能
  • [ ] 5.下降中央倉庫的負荷:maven中央倉庫被請求的數量是巨大的,配置私服也能夠大大下降中央倉庫的壓力

所以咱們在實際的項目中一般使用私服來間接訪問中央倉庫,項目一般不直接訪問中央倉庫

11.png-19.1kB

<br>

</br>
<br>

</br>
##3、環境搭建

  • [x] 首先最新版本2.97 只支持java1.8,咱們須要將jdk版本設置爲1.8
  • [x] tomcat的版本最好也是8.0.x版本,若是使用8.5可能會有問題
  • [x] 系統咱們使用Centos7

3.1 配置jdk環境

$ wget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz

$ tar zxf jdk-8u91-linux-x64.tar.gz -C /usr/local/
$ ln –s /usr/local/jdk1.8.0_91 /usr/local/jdk

$ vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

檢查
$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

<br>

</br>
3.1 安裝Jenkins

提示:首先Jenkins安裝方式有2中,一種是yum安裝,另外一種是使用war的方式進行安裝(war就須要安裝tomcat)

image_1c2g2ndpgrag1s3t1q1l1jas1qun1r.png-148.4kB
官方文檔:https://pkg.jenkins.io/redhat/

若是咱們想使用war包的方式能夠直接下載war包
image_1c2g2po731b81qv9n081v2nk5i2l.png-98.9kB

這裏咱們能夠參考本站之前文章 持續集成之Jenkins+Gitlab簡介 [一]
<br>
</br>
下載tomcat (tomcat和jdk版本最好相同)

$ wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.0.48/bin/apache-tomcat-8.0.48.tar.gz

$ tar xf apache-tomcat-8.0.48.tar.gz –C /application/
$ mv /application/apache-tomcat-8.0.48 /application/jenkins
$ rm –rf /application/jenkins/webapps/* && mkdir –p /application/jenkins/webapps/ROOT

下載war包
$ wget http://mirrors.jenkins.io/war/latest/jenkins.war
$ cp jenkins.war  /application/jenkins/webapps/ROOT/
$unzip /application/jenkins/webapps/ROOT/jenkins.war

咱們直接執行bin/startup.sh啓動就能夠

<br>
</br>

啓動咱們能夠查看tomcat日誌
12.png-71.2kB

Jenkins訪問地址:localhost:8080

關於tomcat安裝參數及配置修改能夠參考本站 企業必會技能tomcat

新版本的jenkins爲了保證安全,在安裝以後有一個鎖,須要設置密碼以後才能夠解鎖
image_1c2g3ao2q1o4l1cdfs7rnlseut3n.png-67.5kB

咱們選擇推薦安裝便可
image_1c2g3bab515pkuhg1iho170q1b9r44.png-109.5kB

安裝插件中
image_1c2g3bopthug3iassevni1lu54h.png-174.5kB

設置管理員帳號密碼
image_1c2g3cevc1kr418md10lbmlh1i3e4u.png-132.1kB

登錄jenkins
image_1c2g3d8ee4798q2do3vnt1jen5b.png-40.2kB

<br>
</br>
3.2 安裝maven環境

$ wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz

$ tar xf apache-maven-3.5.2-src.tar.gz
$ mv apache-maven-3.5.2 /usr/local/
$ ln -s /usr/local/apache-maven-3.5.2/ /usr/local/maven
$ vim /etc/profile
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:$PATH
$source /etc/profile

驗證

$ mvn -v
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T03:58:13-04:00)
Maven home: /usr/local/maven
Java version: 1.8.0_151, vendor: Oracle Corporation
Java home: /usr/local/jdk1.8.0_151/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"

這裏咱們須要修改maven的settings.xml 設置一些相關配置。這裏咱們直接訪問
https://www.abcdocker.com/abcdocker/2893

<br>

</br>

3.3 安裝私服(Nexus)
下載地址:http://www.sonatype.org/nexus/go/
13.png-187kB

$ wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.7.0-04-unix.tar.gz

$ tar xf nexus-3.7.0-04-unix.tar.gz -C /usr/local/
$ ln -s /usr/local/nexus-3.7.0-04/ /usr/local/nexus

設置環境變量
$ vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
export JENKINS_HOME=/jenkins
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:$PATH:/usr/local/nexus/bin

$ source  /etc/profile

啓動腳本

$ nexus 
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
Usage: /usr/local/nexus/bin/nexus {start|stop|run|run-redirect|status|restart|force-reload}

$ nexus start
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
Starting nexus

若是咱們想把警告去除,須要在修改用戶和環境變量。

訪問地址:localhost:8081 端口能夠在/etc/nexus-default.properties中修改)

image_1c2g55c35ch8126m191dhb81di96d.png-134.9kB

nexus登錄界面
image_1c2g55vms1ecm1ve8dbc1ghpnsu6q.png-57.3kB

<br>

</br>

3.4 Jenkins 配置
由於咱們須要構建Java項目,因此須要安裝一個Maven插件
插件名稱Maven Integration plugin
系統管理--&gt;管理插件
image_1c2g5ck4o12mv1v7v1n1j6viqkg77.png-125.4kB

此時咱們能夠在已安裝的插件中找到
QQ圖片20171229113650.png-80.6kB

<br>

</br>
配置Jenkins全局工具配置
系統管理--&gt;全局工具配置
image_1c2g5mt1g1vcc12pa13ec8iv1pek89.png-67.9kB

配置咱們的JDK、Maven地址保存就能夠
asdasdasd14212.png-58.7kB

<br>

</br>

##4、Jenkins構建項目
4.1 建立maven項目
建立maven項目,起名稱
image_1c2g5v4968ua1ci510bti9frui9b.png-128.8kB

4.2 設置構建參數
這裏是說咱們構建的記錄保留的天數與個數
233.png-57.1kB

SVN地址以及帳戶的配置
image_1c2g64q4gliq1fl01nf12931hqvaq.png-81.2kB
222.png-55.4kB
沒有問題就不會報錯
image_1c2g67slptdiud741318k1p2cbs.png-71.9kB

這是maven的編譯參數,若是有問題須要與研發的童鞋商議
image_1c2g695nplr13pm15311dc11cldc9.png-14.6kB

添加Shell腳本,添加的shell腳本能夠是命令,也能夠是執行一個腳本。
image_1c2g69slmd7k11tr10nb1a2g176icm.png-31.2kB

構建演示:
image_1c2g6ed1ol2hu4riucummo6ed3.png-55.7kB

這裏是正在下載依賴包,由於咱們項目通常在測試環境使用,是不少研發一塊兒使用,因此這裏的地址就是咱們私服(Nexus地址)
2222.png-49.9kB

執行完畢
image_1c2g6lalblosv6a1sm21h0t1etdec.png-102.6kB
<br>
</br>

當咱們執行完成以後上面的shell腳本能夠是將war包複製到tomcat項目目錄裏

/jenkins/workspace/maven/bxg-ask-center-web/target
--jenkins主目錄---項目目錄----代碼分支-----

image_1c2ggi4t3sca18svbfs1lqblqeep.png-41.3kB

如下是咱們之前Jenkins shell中的配置,比較low 僅供參考
image_1c2ggmquk8351f251j4ecpt1qjsf6.png-31.6kB

<br>
</br>
提示:不少相關的參數不是運維能決定的,須要研發參與

更改Jenkins的主目錄
https://www.cnblogs.com/zz0412/p/jenkins_jj_07.html

如何用Maven建立web項目(具體步驟)
http://www.javashuo.com/article/p-dufsqbdp-n.html

Maven私服Nexus詳解
http://blog.csdn.net/u013516966/article/details/43753143

maven核心,pom.xml詳解(轉)
http://www.javashuo.com/article/p-zfrnlmcy-z.html

相關文章
相關標籤/搜索