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

 

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

1、DevOpslinux

2、服務介紹git

3、環境搭建web

4、Jenkins構建項目shell

1、DevOps

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

evOps平臺四大模塊

1.項目管理          (建立項目--->>項目需求)vim

2.運維平臺          (監控--日誌收集---等)緩存

3.持續交付          (提交完代碼--->自動打包--->構建)tomcat

4.代碼託管          (gitlab---->代碼提交)—————————————>>DevOps平臺安全

針對DevOps開源項目

1.項目管理---(JIRA非開源可是用的人比較多)、(Redmine使用ruby寫的)

2.代碼託管---(SVN--usvn有web管理界面)、(GitLab)

3.持續交付---(主流Jenkins)、(GitLab gitlab-ci也能夠作交付)

4.運維平臺---(國內的開源運維平臺可能就是騰訊藍鯨)

2、服務介紹

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

2.1 Jenkins介紹

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

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構成的

2.3 SVN介紹

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

2.4 Nexus介紹

maven的倉庫只有兩大類:1.本地倉庫 2.遠程倉庫,在遠程倉庫中又分紅了3種:

1 中央倉庫 
2 私服 
3 其它公共庫。

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

Maven私服的 個特性:

1.節省本身的外網帶寬:減小重複請求形成的外網帶寬消耗

2.加速Maven構件:若是項目配置了不少外部遠程倉庫的時候,構建速度就會大大下降

3.部署第三方構件:有些構件沒法從外部倉庫得到的時候,咱們能夠把這些構件部署到內部倉庫(私服)中,供內部maven項目使用

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

5.下降中央倉庫的負荷:maven中央倉庫被請求的數量是巨大的,配置私服也能夠大大下降中央倉庫的壓力。

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

3、環境搭建

3.1 配置jdk環境

 1 wget http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz
 3 tar xf jdk-8u151-linux-x64.tar.gz -C /usr/local/
 4 ln -s /usr/local/jdk1.8.0_151 /usr/local/jdk
 5 vim /etc/profile
 6 export JAVA_HOME=/usr/local/jdk
 7 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 8 export PATH=$JAVA_HOME/bin:$PATH
 9 source /etc/profile
10 java -version
11 java version "1.8.0_151"
12 Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
13 Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

3.1 安裝Jenkins

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

官方文檔:https://pkg.jenkins.io/redhat/

若是咱們想使用war包的方式能夠直接下載war包

下載tomcat (tomcat和jdk版本最好相同)

1 wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.0.48/bin/apache-tomcat-8.0.48.tar.gz
2 tar xf apache-tomcat-8.0.48.tar.gz -C /application/
3 mv apache-tomcat-8.0.48 jenkins
4 rm -rf /application/jenkins/webapps/* && mkdir -p /application/jenkins/webapps/ROOT
5 下載war包
6 wget http://mirrors.jenkins.io/war/latest/jenkins.war
7 cp jenkins.war  /application/jenkins/webapps/ROOT/
8 unzip /application/jenkins/webapps/ROOT/jenkins.war
9 咱們直接執行bin/startup.sh啓動就能夠

Jenkins訪問地址:localhost:8080

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

咱們選擇推薦安裝便可

設置管理員賬號密碼:

3.2 安裝maven環境

 1 wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
 2 tar xf apache-maven-3.5.2-bin.tar.gz 
 3 mv apache-maven-3.5.2 /usr/local/
 4 ln -s /usr/local/apache-maven-3.5.2 /usr/local/maven
 5 vim /etc/profile
 6 export M2_HOME=/usr/local/maven
 7 export PATH=${M2_HOME}/bin:$PATH
 8 source /etc/profile
 9 mvn -v查看版本
10 Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00)
11 Maven home: /usr/local/maven
12 Java version: 1.8.0_151, vendor: Oracle Corporation
13 Java home: /usr/local/jdk1.8.0_151/jre
14 Default locale: zh_CN, platform encoding: UTF-8
15 OS name: "linux", version: "3.10.0-693.11.1.el7.x86_64", arch: "amd64", family: "unix"

3.3 安裝私服(Nexus)

下載地址:http://www.sonatype.org/nexus/go/

 1 wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.7.0-04-unix.tar.gz
 2 tar xf nexus-3.7.0-04-unix.tar.gz -C /usr/local/
 3 ln -s /usr/local/nexus-3.7.0-04/ /usr/local/nexus
 4 設置環境變量
 5  vim /etc/profile
 6 export JAVA_HOME=/usr/local/jdk
 7 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 8 export PATH=$JAVA_HOME/bin:$PATH
 9 export JENKINS_HOME=/jenkins
10 export M2_HOME=/usr/local/maven  
11 export PATH=${M2_HOME}/bin:$PATH:/usr/local/nexus/bin
12 source  /etc/profile

啓動腳本

nexus start

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

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

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

 

3.4 Jenkins 配置

由於咱們須要構建Java項目,因此須要安裝一個Maven插件 
插件名稱Maven Integration plugin 
系統管理-->管理插件

配置Jenkins全局工具配置

系統管理-->全局工具配置

4.1 建立maven項目

建立maven項目,起名稱

4.2 設置構建參數 

這裏是說咱們構建的記錄保留的天數與個數

SVN地址以及帳戶的配置

沒有問題就不會報錯

添加Shell腳本,添加的shell腳本能夠是命令,也能夠是執行一個腳本。

相關文章
相關標籤/搜索