maven+jenkins+nexus+git 持續集成

1、背景介紹

  隨着互聯網的普及,項目的規模不斷擴大,持續集成變的至關重要。git

  當項目的規模變大,動輒幾十個項目要維護的時候,就會給開發、部署、集成測試帶來極大的挑戰。spring

2、maven簡單介紹

  maven主要用途爲項目構建、依賴管理、項目信息管理。shell

  簡單安裝:下載maven http://maven.apache.org/download.cgi,配置環境變量 MAVEN_HOME爲maven安裝目錄,PATH環境變量最後附加上";%MAVEN_HOME%\bin"。apache

  打開cmd,輸入mvn -v。基本用法這裏不過多介紹了。windows

  maven版本介紹:服務器

  一、快照版本(SNAPSHOT)和正式版本(RELEASE),若是是快照版本在編譯打包時會自動去maven倉庫上下載最新的版本,而若是是穩定版本,則不會從新下載。這也是一些項目中,定義了一些基礎組件爲穩定版本,在作過一些修改後沒有升級版本號致使其餘開發人員更新不到。一般解決辦法爲刪除本地倉庫中已有的穩定版本或者升級版本號。框架

  二、關於選擇版本的問題,SNAPSHOT版本的庫是一直在變化的是一個不穩定因素,RELEASE則爲不可變化的,有些人會在在maven私服設置redeploy屬性爲true,這樣會讓RELEASE版本也不在穩定,這是一般沒有問題,一旦由於版本問題引起事故就會給排查帶來極大的麻煩。ssh

  maven生命週期簡介:maven

  • 驗證(validate) - 驗證項目是否正確,全部必要的信息可用
  • 編譯(compile) - 編譯項目的源代碼
  • 測試(test) - 使用合適的單元測試框架測試編譯的源代碼。這些測試不該該要求代碼被打包或部署
  • 打包(package) - 採用編譯的代碼,並以其可分配格式(如JAR)進行打包。
  • 驗證(verify) - 對集成測試的結果執行任何檢查,以確保知足質量標準
  • 安裝(install) - 將軟件包安裝到本地存儲庫中,用做本地其餘項目的依賴項
  • 部署(deploy) - 在構建環境中完成,將最終的包複製到遠程存儲庫以與其餘開發人員和項目共享。

  針對不一樣的生命週期,maven能夠加入不一樣的插件(自定義插件和類庫中的插件)來達到特殊的功能。這個插件就讓打包時,依賴和項目分離同事指定main方法,這種作法方便抽離公共依賴(對版本管理有一點要求)。svn

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<useUniqueVersions>false</useUniqueVersions>
<addClasspath>true</addClasspath>
<classpathPrefix>dependency/</classpathPrefix>
<mainClass>com.XXXX.XXXX.XXXX</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
 

  座標介紹:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.5.RELEASE</version>
</dependency>

 

  一、groupId:定義當前maven項目隸屬實際項目。maven項目和實際項目不必定是一對一的關係。好比spring項目。

  二、artifactId:該元素定義項目中的一個模塊。

  三、version:該元素定義相關的版本信息。

  四、還有一些其餘屬性就不一一列出了(如scope等)。

  那麼這個依賴在本地倉庫中位置爲:本地倉庫位置\groupId\artifactId\version。好比本地倉庫位置\org\springframework\spring-core\4.0.5.RELEASE

  安裝好maven 後須要修改對應的settings文件,這裏就不介紹了。

3、maven 私服nexus

  一、maven倉庫:

    1)本地倉庫:一般在maven項目中沒有傳統的 lib\來存放依賴。當maven執行命令時,若是須要使用這些依賴,它會基於依賴座標在本地倉庫中查找依賴文件。

    2)遠程倉庫:一般一個項目須要依賴不少三方類庫,可是咱們的本地倉庫默認是空的,這個時候一般是須要一個遠程倉庫去下載這些依賴到本地倉庫。

  經常使用的中央倉庫:http://mvnrepository.com/http://maven.aliyun.com/nexus/content/groups/public/

    3)私服:私服是一種特殊的遠程倉庫,它一般架設在局域網內代理遠程倉庫。一些沒法從遠程倉庫上下載到的依賴能夠統一上傳到私服上供項目組使用。

    

  二、私服(nexus)介紹

    1)  maven的私服有不少,本文介紹nexus。私服不是maven的核心概念,使用私服能夠下降中央倉庫的負荷、節省外網帶寬、加速構建maven、部署本身的maven構件。

    2) 下載nexus https://www.sonatype.com/download-oss-sonatype windows版。版本可自行選擇解壓nexus-2.12.0-01-bundle.zip,另外一個不是必須的在啓動時會自動生成。

    3) 找到安裝目錄D:\soft\nexus-2.12.0-01\bin\jsw\windows-x86-64以管理員身份運行start-nexus.bat,D:\soft\nexus-2.12.0-01\conf\nexus.properties能夠修改啓動端口等信息。

啓動成功後訪問localhost:8081/nexus。見到以下圖:

 

    

、  4)默認登陸用戶名密碼admin/admin123 。nexus默認包含了group(倉庫組)、host(宿主)、proxy(代理)和virtual(虛擬)。每一個倉庫有一個policy,表示該倉庫爲release版本或snapshot版本。客戶端會根據須要從倉庫組中的不一樣倉庫去下載對應的依賴。

      畫個圖方便你們理解:

     

     安裝好後nexus已經爲咱們建立了一些默認的倉庫,如release宿主倉庫,咱們就能夠經過最後的artifact upload上傳jar包,也能夠經過命令

     mvn deploy:deploy-file -DgroupId=座標名-DartifactId=座標名 -Dversion=版本 -Dpackaging=jar -Dfile=jar包位置 -Durl=http://localhost:8081/nexus/content/repositories/loan-release -DrepositoryId=倉庫id

  

 

    讓咱們看一下倉庫組:右邊的添加順序決定了倉庫的檢索順序,一般經常使用的倉庫會配置在前面。

  

 

 

    修改本地settings配置,經過鏡像的方式使nexus倉庫組生效:

    

    <servers>
        <server>
            <id>nexus</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>

   <mirrors>
        <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <name>Nexus Mirror.</name>
         <url>http://localhost:8081/nexus/content/groups/public/</url>
        </mirror>
    </mirrors>

    

  簡單windows版的nexus就搭建好了。

4、jenkins持續構建

  一、jenkins的前身爲hubson,它能夠爲咱們帶來的主要功能以下:

    1)持續編譯:當有代碼提交時(svn或git),jenkins可配置爲自動觸發去編譯新生成的代碼。

    2)持續測試:如今大多項目都測試都使用JUnit之類的框架,jenkins能夠在集成的過程當中運行這些測試案例並生成報告。

    3)持續部署:在完成集成後jenkins同時支持自動發佈到指定環境。

  二、下載windows版本  https://jenkins.io/download/  直接安裝便可,初始化過程當中咱們選擇默認安裝一下插件也能夠後面自行添加,jenkins默認啓動端口爲8080可修改根目錄下的jenkins.xml

  

  安裝示意圖,完成後咱們使用admin用戶登陸。

 

   

 

    三、首先配置一些全局屬性。點擊系統管理->Global Tool Configuration,配置jdk,git(能夠經過git version,where is git 查看安裝目錄),maven的安裝目錄。

    

    點擊系統管理->管理插件,找到並安裝maven插件

    安裝publish over ssh插件(經過ssh的方式將項目部署到遠程服務器),

 

    四、建立maven項目

      1)點擊開始建立一個新任務。

      2)選中構建一個maven項目。

      

      3)選擇源碼管理中的git,Credentials爲添加用戶名密碼,好比咱們使用gitlab時須要輸入。

  

      4)找到build選項,輸入clean package 即maven清除 打包命令,點擊保存。(這裏咱們就不配置自動部署了一般使用publish over ssh方式)

  

      5)點擊構建按鈕。

  

  紅色狀態爲失敗,藍色爲成功

  點擊控制檯輸出能夠看到本次編譯的具體信息。

  

 

    構建完的項目在工做空間中,點擊便可下載。

    

      6)自動部署有不少種形式這裏並無配置,經常使用的有經過shell腳本和publish over ssh, 也能夠在服務器上經過wget方式取到工做空間中的jar或者war進行部署。

5、總結

   本文爲一個簡單入門,不管是maven、jenkins、nexus、git都不是能夠一下學會的,都須要更多的學習和練習才能熟練使用。

相關文章
相關標籤/搜索