1. 程式人生 > >jenkins 持續整合環境搭建

jenkins 持續整合環境搭建

持續整合

持續整合(CI)是一種軟體工程流程,將所有工程師對於軟體的工作複本,每天整合數次到共用主線(mainline)上。

依賴以下原則達到目標

  • 維護一個程式碼庫
  • 自動建置
  • 讓建置時會自我測試
  • 所有人每天至少提交一次
  • 應該要建置每一個提交
  • 讓建置維持快速
  • 用線上環境的複本測試
  • 讓獲取最新發布版本更容易
  • 任何人都可以檢視最後建置的結果
  • 自動部署

產生的效益

  • 及早發現整合錯誤且由於修訂的內容較小所以易於追蹤,這可以節省專案的時間與成本。
  • 避免釋出日期的前一分鐘發生混亂,當每個人都會嘗試為他們所造成的那一點點不相容的版本做檢查。
  • 當單元測試失敗或發生錯誤,若開發人員需要在不除錯的情況下還原始碼庫到一個沒有問題的狀態,只需要放棄一小部分的更改 (因為整合的次數頻繁)。
  • 讓 “最新” 的程式可保持可用的狀態供測試、展示或釋出用。
  • 頻繁的提交程式碼會促使開發人員建立模組化,低複雜性的程式碼。 Jenkins是一個用Java編寫的開源的持續整合工具,前身是Hudson (軟體)專案,有豐富的外掛支援;

Jenkins安裝

安裝jdk

1 tar xf jdk-8u112-linux-x64.tar.gz -C /usr/local/

配置jdk環境變數
vim /etc/profile

123 export JAVA_HOME=/usr/local/jdk1.8.0_112export CLASSPATH=.:$JAVA_HOME/lib/:$JAVA_HOME/jre/lib/export PATH=$JAVA_HOME/bin:$PATH

安裝jenkins

123 wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.reporpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.keyyum install jenkins

新增java路徑到jenkins啟動指令碼中
vim /etc/init.d/jenkins

1 /usr/local/jdk1.8.0_112/bin/java

jenkins

啟動jenkins

12 /etc/init.d/jenkins startchkconfig --level 35 jenkins on

訪問路徑 http://192.168.6.102:8080
預設密碼存在這個檔案中 /var/lib/jenkins/secrets/initialAdminPassword
jenkins
建立一個管理使用者
jenkins
jenkins

Jenkins 配置

全域性工具配置

點選系統配置-Global Tool Configuration
jenkins
針對專案中使用的jdk和maven情況新增對應的版本
jenkins

外掛安裝配置

點選系統配置-外掛管理
jenkins

  • 可選外掛直接安裝
    右上角的過濾功能很好用,可以直接搜尋安裝
    安裝以下外掛
    Hudson SCP publisher plugin
    Deploy to container Plugin
    Maven Integration plugin
    Publish Over SSH
    Backup plugin / ThinBackup
    Email Ext Recipients Column Plugin

釋出一個靜態網站

配置Hudson SCP publisher plugin外掛

此外掛用於釋出靜態網站,拷貝檔案很方便
jenkins
配置需要釋出的伺服器hostname,埠,路徑,使用者名稱,密碼(如果是正式環境,不建議使用root使用者)

ps:這裡有個小技巧,如果這臺機器上有多個靜態網站目錄的話,可以在伺服器設定多個hosts記錄,這裡使用主機名來分割槽不同的路徑

新建一個軟體專案test

jenkins
原始碼管理:
填寫svn路徑
有獲取程式碼許可權的使用者名稱密碼
jenkins
構建後操作:
選擇需要scp的路徑
Source ** 表示所有
Keep Hierarchy 保持目錄結構(否則不能拷貝資料夾)
jenkins
點選立即構建
jenkins
通過 Console Output可以看到詳細日誌
jenkins
至此,一個靜態網站就釋出完成了!

釋出一個java後臺工程

安裝Deploy to container Plugin外掛

此外掛可以將war/ear 包釋出到tomcat,glassfish,jetty,weblogic等中介軟體上

配置tomcat web管理

vim /usr/local/apache-tomcat-7.0.77/conf/tomcat-users.xml

123456 <role rolename="tomcat"/><role rolename="role1"/><role rolename="manager-gui"/><role rolename="manager-gui,manager-script,manager-jmx,manager-status"/><user username="tomcat" password="tomcat" roles="manager-gui"/><user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

由於jenkins把8080端口占用,我這裡修改tomcat埠為8081
vim /usr/local/apache-tomcat-7.0.77/conf/server.xml

1 <Connector port="8081" protocol="HTTP/1.1"

一個簡單的maven工程程式碼

maven 的簡單使用

檢視版本

1 mvn -version

檢視詳細資訊

1 mvn X

測試

1 mvn test

清理(target目錄下的編譯內容)

1 mvn clean

編譯專案

1 mvn compile

打包釋出

1 mvn package

生成eclipse專案檔案

1 mvn eclipse:eclipse

產生site

1 mvn site

安裝當前工程的jar安裝到本地倉庫

1 mvn install

安裝jar包到本地倉庫

1 mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=/usr/local/src/ojdbc14-10.2.0.4.0.jar

分析專案的依賴資訊

1 mvn dependency:analyze / mvn dependency:tree

新建一個maven工程

獲取程式碼
jenkins
編譯引數
jenkins
構建後釋出
jenkins
點選立即構建
檢視日誌,已經發布完成了
jenkins
訪問專案
http://192.168.6.102:8081/hello
jenkins
至此,一個maven工程已經實現自動化編譯、打包、釋出!

版本回退

有時候釋出一個新版本失敗或釋出有問題,我們需要回滾到指定版本的構建,這樣才能更靈活的進行專案的構建部署。我們可以選擇“引數化的構建過程”進行傳遞不同的引數來選擇是進行新的構建還是退

對檔案進行存檔

為了能夠進行版本回退,構建完成的需要對檔案進行存檔
jenkins

使用引數化構建過程

讓後面的腳步可以根據不同的變數執行不同的操作。新增“Choice”引數配置不同的選項,讓選擇釋出還是回滾,新增“String Parameter”引數來傳遞要回退的版本號。
jenkins

構建選擇“Execute Shell”的方式

自己根據變數,自定義構建的指令碼,此時如果是釋出安裝maven的構建過程進行新的構建,如果是回滾,知道歷史構建後的檔案,複製到當前構建結果目錄。

12345678910111213141516 case $deploy_env in deploy) echo "deploy:$deploy_env" mvn clean test compile install package ;; rollback) echo "rollback:$deploy_env" echo "version: $version" rm -fr target/hello-1.war cp -R ${JENKINS_HOME}/jobs/myapp/builds/${version}/com.efsavage\$hello/archive/com.efsavage/hello/1/hello-1.war . pwd && ls ;; *) exit ;;esac

執行回退操作

點選構建,根據不同的引數選擇釋出還是版本回退,回退的時候填寫要回退到的歷史版本號
jenkins
jenkins

linux技術交流群:295294329