歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

自動化部署入門Git+Nexus+SonarQube+Hudson

自動化部署的優點就不在這裡贅述了,本文意在入門。軟件都多少有一些權限等配置,這些請大家自行查找,如果實在找不到可以留言。

環境:

兩台CentOS,且都配置jre
ip分別為:
- 192.168.199.61 作為CI服務器
- 192.168.199.60 應用服務器

OS:
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# head -n 1 /etc/issue
CentOS release 6.2 (Final)

安裝Git,Tomcat

//安裝步驟略,網上太多了,大家參考下。

需要注意的是Tomcat的配置

1.移除/root/hudson-tomcat/webapps 目錄下的所有文件:
# rm -rf /root/hudson-tomcat/webapps/*
2.將 Tomcat 容器的編碼設為 UTF-8:
# vi /root/hudson-tomcat/conf/server.xml

如果不把 Tomcat 容器的編碼設為 UTF-8,在以後配置 Hudson 是提示
3.設置 hudson-tomcat 的內存

# vi /root/hudson-tomcat/bin/catalina.sh 

#!/bin/sh 下面增加: 
JAVA_OPTS='-Xms512m -Xmx2048m'

配置iptables策略

策略我提前說,為的是之後就不說了。因為後面的多個系統每對外暴露的端口都需要在其中增加策略,所以一起說了,具體策略屬於哪個系統,看注釋,也建議大家都寫注釋,否則策略太多,分不清哪個是哪個了。iptables位置是/etc/sysconfig/iptables

[root@ci ~]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#############以下為新增##############
# nexus
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
# sonar
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
# hudson
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
# zookeeper
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
#############以上 END ##############
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

安裝maven

由於Hudson和maven最新版集成的時候有bug,所以我們使用apache-maven-3.0.5

[root@ci ~]# wget https://archive.apache.org/dist/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.tar.gz
[root@ci ~]# tar -zxvf apache-maven-3.0.4-bin.tar.gz
[root@ci ~]# cd apache-maven-3.0.4/conf/
[root@ci ~]# vim settings.xml ##配置文件,參考nexus安裝

安裝Nexus

一句話介紹:
Maven中央倉庫的私服,也就是本地倉庫和中央倉庫之間的我們自己架設的倉庫。
參考 安裝Nexus

安裝SonarQube

一句話介紹:
是一款自動化質量管理系統
前提:已安裝 JDK8 並配置好了環境變量,安裝完MySQL 可以參考源碼編譯安裝MySQL

[root@ci ~]# java -version
openjdk version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-b14)
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
##下載
[root@ci ~]# wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.6.zip
##解壓安裝:
[root@ci ~]# unzip sonarqube-5.6.zip
[root@ci ~]# mv sonarqube-5.6.zip sonarqube
##編輯 sonar 配置:
[root@ci ~]# cd sonarqube/conf/
[root@ci ~]# vi sonar.properties
sonar.jdbc.username=root
sonar.jdbc.password=root

#----- MySQL 5.x sonar.jdbc.url=jdbc:mysql://localhost:3306/sonarqube?useUnicode=true&characterE ncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.web.host=0.0.0.0
sonar.web.context=/sonarqube 
sonar.web.port=9000
##保存以上配置(注意,要看看默認的 9000 端口是否已被占用)
##防火牆中打開 9000 端口:
[root@ci ~]# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT #重啟防火牆,使端口配置生效
[root@ci ~]# service iptables restart
啟動 SonarQube Web Server
[root@ci ~]# /root/sonarqube/bin/linux-x86-64/sonar.sh start (初次啟動會自動建表和做相應的初始化)
浏覽器中輸入:http://192.168.199.61:9090/sonarqube/

登錄,默認用戶名/密碼為 admin/admin
在選擇菜單 配置–>系統–>更新中心–>available中分別安裝PMD,Checkstyle,Cobertura,Chinese Pack這些常用插件。

Maven 分析器插件的配置與使用

http://docs.sonarqube.org/display/SONAR/Installing+and+Configuring+Maven
在 Maven 本地庫中的 settings.xml(我這裡是 settings_edu.xml)配置文件中的 節點中添加如下配置:

        
            sonar
            
                true
            
            
                
                
                    jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8
                
                root
                root

                
                
                    http://192.168.199.61:9000/sonar
                
            
        

使用 Maven 分析器進行分析

命令:
純 Maven 命令:mvn clean install sonar:sonar
如果你是第一次運行此命令,看執行日志你會發現它會先下載 sonar-runner 等插件,成功執行完分析命令後便可到 Web Server 中查看代碼質量分析結果數據。

至此,所有安裝准備工作已完成,接下來需要配置Hudson來進行自動化構建。

安裝Hudson

安裝Hudson和部署一個web項目一樣簡單。所以直接下載Hudson的war包即可。
Hudson 只是一個持續集成服務器(持續集成工具),要想搭建一套完整的持續集成管理平台, 還需要用到Git、Maven、Sonar 等工具,按需求整合。

[root@ci ~]# mv hudson-3.3.3.war ~/download/
[root@ci ~]#   cd ../bin/
[root@ci bin]# pwd
/root/download/tomcat/bin
[root@ci ~]#   ./startup.sh 

Hudson的默認工作空間

/root/.hudson/jobs 就是構建完後的所有項目
/root/.hudson/jobs/項目/workspace/target 每個項目構建完成後的文件 jar或者war或者等等。

[root@ci .hudson]# pwd
/root/.hudson
[root@ci .hudson]# cd jobs
[root@ci jobs]# ll
total 32
drwxr-x---. 5 root root 4096 Jul  5 01:13 service-common
drwxr-x---. 5 root root 4096 Jul  5 01:13 service-common-config
drwxr-x---. 5 root root 4096 Jul  5 01:13 service-common-core
drwxr-x---. 5 root root 4096 Jul  5 01:13 service-common-web
drwxr-x---. 5 root root 4096 Jul  5 01:13 service-parent
... ...
[root@ci jobs]# cd service-common-core/
[root@ci service-common-core]# ll
total 28
drwxr-x---. 6 root root 4096 Jul  1 09:56 builds
-rw-r-----. 1 root root 5300 Jul  5 01:13 config.xml
... ...
drwxr-x---. 5 root root 4096 Jul  1 08:21 workspace
[root@ci service-common-core]# cd workspace/
[root@ci workspace]# ll
total 16
-rw-r-----.  1 root root 3669 Jul  1 08:21 pom.xml
-rw-r-----.  1 root root   39 Jul  1 08:21 README.md
drwxr-x---.  4 root root 4096 Jul  1 08:21 src
drwxr-x---. 11 root root 4096 Jul  1 08:22 target
[root@ci workspace]# cd target/
[root@ci target]# ll
total 60
drwxr-x---. 3 root root  4096 Jul  1 08:22 classes
... ...
-rw-r-----. 1 root root 23516 Jul  1 09:54 service-common-core-1.0-SNAPSHOT.jar
drwxr-x---. 2 root root  4096 Jul  1 09:56 sonar

配置 HudsonHome(可選)

這一步是為了建立自定義的Hudson工作空間目錄,到時候找項目target的時候需要,如果沒配置就按上面說的位置(/root/.hudson)查找。

在/root 目錄下創建 HudsonHome 目錄,並配置到環境變量 
[root@ci ~]# mkdir HudsonHome
切換到 root 用戶,在/etc/profile 中配置全局環境變量
[root@ci ~]# vi /etc/profile 
## hudson env
export HUDSON_HOME=/root/HudsonHome
[root@ci ~]# source /etc/profile

Hudson配置

初始化配置

訪問 http://192.168.199.61:8080/hudson-3.3.3 進入初始化界面。
選擇

√ Hudson BIRT Charts Plugin
√ JNA Native Support Plugin
√ XPath Provider Plugin

然後install
初始化安裝需要安裝 3 個默認勾選中的插件(如上圖紅色部分),其它插件可以等初始 化安裝完成之後再選擇安裝。 點擊“Install”安裝按鈕後,需要等待一會時間才能安裝完成。安裝完成後按“Finish”按鈕。 安裝的插件保存在 /root/HudsonHome/plugins 目錄。

安全配置

初始化完成後就會進行 Hudson 的配置管理界面:
1.啟動安全配置
菜單:系統管理–>Configure Security–> Enable security [save]
2.配置Access Control
菜單:系統管理–>Configure Security

Access Control:
        Security Realm:
        √ Hudson專有用戶數據庫
        √ 允許用戶注冊   √ Notify user of Hudson account creation
        Authorization
        √ 安全矩陣
        admin 所有復選框全勾選 #這裡是需要在下面文本框中輸入admin的。
        匿名用戶 只勾選所有read項

配置完Access Control後直接[save]。
3.注冊超管
菜單:右上角 注冊–>Sign up 填寫完信息後,郵箱最好是真實常用的。 [Sign up] 按鈕完成
4.系統設置
菜單:系統管理–>系統設置
4.1.配置系統信息、JDK、Maven,sonar和SSH 需要安裝插件後再配置。否則沒有配置項。

Instance Tag(Hudson自定義系統名稱) : 牛X系統CI服務器
系統消息:一段系統描述
執行者數量:2
生成前等待時間:5
SCM簽出重試次數:2

√ 防止跨站點請求偽造
    Crumbs
        Crumb Algorithm
         √ Default Crumb Issuer
         √ Enable proxy compatibility
JDK
    JDK 安裝
        別名:openjdk-1.8.0
        JAVA_HOME:/usr/lib/jvm/java-1.8.0-openjdk.x86_64
Git
    Git 安裝
        Name:Default
        Path to Git executable:git
Maven
    Maven 安裝
        Name:maven-3.0.5
        MAVEN_HOME:/root/download/apache-maven-3.0.5
Sonar  #在 Hudson 中配置 SonarQube 鏈接
    Sonar installations
    Name:sonar5.6
    Server URL:http://192.168.199.61:9000/sonar
    Sonar account login:admin
    Sonar account password:admin
    Server Public URL:http://192.168.199.61:9000/sonar
    Database URL:jdbc:mysql://192.168.199.131:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatement s=true&useConfigs=maxPerformance
    Database login:root
    Database password:root
    Database driver:com.mysql.jdbc.Driver
郵件通知
    SMTP服務器:smtp.163.com
    系統管理員郵件地址:[email protected]
    Hudson URL:http://192.168.199.61:8080/hudson-3.3.3/
    √ 使用SMTP認證
    用戶名:[email protected]
    密碼:xxxx
    SMTP端口:25
    Charset:UTF-8
SSH Servers 
    #我配置了一台遠程機器,如果是多項目的化,以此類推,在構建項目選項的時候就會讓我們選擇是發布到哪台機器上
    Name:192.168.199.60_product-provider
    Hostname:192.168.199.60
    Username:root
    Remote Directory:/root
    √ Use password authentication, or use a different key 使用密碼
    Passphrase / Password:root
    Port:22
    Timeout:300000
    #配置完後記得用[Test configuration]button測試一下,如果是success就OK啦。

插件安裝

結合我們想要實現的持續集成功能,需要安裝如下幾個插件。如想集成更多功能,自行 添加插件並配置則可。(注意:現在我們使用了 SonarQube 質量管理平台,則不再需要在 Hudson 中單獨去安裝 CheckStyle、Findbugs、PMD、Cobertura 等 Sonar 中已有的插件) 逐個搜索你想要安裝的插件並點擊安裝,安裝完之後重啟 Hudson。
菜單:系統管理–>管理插件–>available–>search
輸入 sonar 搜索出

√ Sonar Plugin
  TusarNotifier

選擇Sonar Plugin 然後[install]就安裝成功,然後會提示restart,[restart]後即可完成一個插件的安裝。
我們需要通過以上方法安裝如下幾個插件:

√ Sonar Plugin
√ Hudson GIT plugin
√ Publish Over SSH
√ Hudson SSH plugin

Hudson 的使用

添加項目(maven為例)

菜單:新建任務
任務名稱: xxxxx
√ 構建一個Maven 2/3 (Legacy)項目
[OK]進入Job Configurations

Project name:測試項目名稱
Cascading Job:none
Description:產品api實現
√ Discard Old Builds #保留50次歷史記錄
Days to keep builds:50
Max # of builds to keep:50
Source Code Management
    Git
        Repositories--URL of repository:[email protected]
        Branches to build--Branch Specifier (blank for default):master
Build Triggers #觸發動作,被誰觸發
    Build after other jobs are built #在另一個項目構建之後自動構建。如果是獨立的項目,這裡就不需要配置了
        Jobs names:service-xxxxx-api
    Poll SCM #規則可參考linux 的 crontab 規則
        Schedule:* * * * *  #每分鐘檢查git是否有變化
Build
    Root POM:pom.xml
    Goals and options:install #要執行的命令
Build Settings
    √ E-mail Notification
    √ Send e-mail for every unstable build
Post-build Actions:
    √ Sonar
    Send build artifacts over SSH
        SSH Publishers
            Name: #這個就是剛才系統設置裡增加的ssh server,選擇一個目標機器即可。
            Transfers
                #這個地址是hudson每個項目的地址中的target,參考安裝hudson那個小節
                Source files:target/service-product-core.jar,target/lib/*
                Remove prefix:target #前綴
                #這個地址要注意了,配置遠程ssh server的時候有一個Remote Directory:/root
                #此處的Remote directory是相對那個地址而言的,也就是那個地址下的路徑
                #最終會將service-product-core.jar發送到 遠程的/root/xiaoshoujia/service/product目錄下
                Remote directory:xiaoshoujia/service/product
                #在遠程機器執行的腳本,這個腳本已經在遠程的目錄下了。
                Exec command:/root/xiaoshoujia/service/product/service-product.sh

最後[save]保存構建配置。

構建流程

這樣,構建一個項目包括
1.項目名稱及描述
2.要拉取的Git地址
3.有無觸發條件
4.pom文件
5.sonar的質量檢測
6.異常郵件提醒
7.以及構建完後要發送的遠程服務器目錄
8.最終執行遠程服務器的腳本,啟動應用

執行構建

配置完後,在主界面就可以看到Jobs Status下面是一個個新建的任務。
最後上個圖吧
Jobs Status
紫色的框中光盤按鈕是執行構建,黃色的框中是Console 命令行輸出。
<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxjb2RlIGNsYXNzPQ=="hljs avrasm">至此超級簡單的配置和使用就完成了。當然配置和構建過程可能還有很多小問題需要大家去解決,如果有問題直接留言即可。

Copyright © Linux教程網 All Rights Reserved