天天看點

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

文章目錄結構如下:

1> Jenkins與Git相關介紹

2> Jenkins部署安裝

3> Gitblit部署安裝

4> Jenkins與Git內建使用

5> 項目內建開發執行個體

6> 總結

一、Jenkins與Git相關介紹

Jenkins是現在非常流行的持續內建(Continuous Integration)CI伺服器,它的前身是Hudson。Jenkins易于安裝,不需要資料庫的支援,直接通過Web界面進行配置,而且內建了RSS/Email的通知機制,支援分布式建構,具有豐富的插件,這些都是Jenkins相比其它持續內建伺服器的優勢所在。

Git在Wikipedia上的定義是,它是一個免費的、分布式的版本控制工具,或者是一個強調了速度快的源代碼管理工具。Git最初被Linux Torvalds開發出來用于管理Linux核心的開發。每一個Git的工作目錄都是一個完全獨立的代碼庫,并擁有完整的曆史記錄和版本追蹤能力,不依賴于網絡和中心伺服器。Git的出現減輕了許多開發者和開源項目對于管理分支代碼的壓力,由于對分支的良好控制,更鼓勵開發者對自己感興趣的項目作出貢獻。其實許多開源項目包括:Linux kernel,Samba,X.org Server, Ruby on Rails,都已經過渡到使用Git作為自己的版本控制工具。

Jenkins持續內建的主要流程就是Jenkins會在背景進行,輪詢版本控制的存儲庫,當發現版本庫出現變更,就會通過預定義的建構腳本進行項目的建構,Jenkins會根據項目需求将建構的任務配置設定到Slave端。一般的項目建構過程主要分為自動化編譯和自動化測試兩個階段,這同樣是你腳本發揮作用的階段。

二、Jenkins部署安裝

本文檔Jenkins安裝配置環境:Centos 6.3。Jenkins是一款基于Java開發的開源的、目前最廣泛流行的持續內建工具。豐富的插件可以讓它的使用更加簡單,它幾乎支援所有的版本控制系統。你可以通過各種方式來配置建構過程,例如:在版本控制系統中出發一次送出,通過一個定時的腳本來排程,一個指定的編譯過程完成之後開發建構等等。

1> 安裝Java:yum install java-1.6.0-openjdk;安裝完成後通過java -version來檢查是否安裝成功。

2> 将Jenkins的repo資源庫加入本機。

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

3> 安裝Jenkins

      rm -rf jenkins.repo

      mv jenkins.repo.1 jenkins.repo

      yum intall jenkins

4> 設定Jenkins開機自啟動

      chkconfig jenkins on

5> 啟動Jenkins

      service jenkins start

6> 通過web通路Jenkins

     預設情況下,Jenkins會在8080端口啟動,可以通過:netstat -anop | grep 8080 來檢視,通路:http://192.168.85.128:8080/通路, 注意此時要關閉防火牆。

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

7> 配置使用者安全通路

      現在,我們來配置Jenkins的安全認證。預設情況下Jenkins“允許任何人做任何事情”,這裡我們将采用基于矩陣的安全認證,其實就是權限清單。

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

      點選“Configure Global Security”-> “Jenkins專有使用者資料庫”-> “允許使用者注冊”,點選儲存。儲存後,在右上角就出現了注冊的按鈕。

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

     點選注冊,填寫相應的資訊後,點選儲存。

     現在,我們将限制使用者注冊,采用“基于安全矩陣的授權政策”。

     将Jenkins專有使用者資料庫下的“允許使用者注冊”勾掉,在授權政策中選擇“安全矩陣”,在添加使用者/組中,填寫剛才注冊的賬号,并為他選擇所有的權限清單。

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

    現在,剛剛添加的houqd2012使用者在登陸後就可以管理Jenkins了。其它,注冊的使用者,可以利用houqd2012在賬号管理中配置設定不同的權限。

    添加使用者:“系統管理”-> “管理使用者”-> “建立使用者”

    賦予權限:houqd2012管理者賬号登陸,在“Configure Global Security”中配置設定權限:為user01配置設定很小的權限,這樣就可以對賬号,以及各自擁有的權限進行統一的配置了。

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

三、Gitblit安裝部署

        Git是現在很流行的分布式版本控制工具,github更是人盡皆知。但是,github要求更夠通路網際網路,我們可以在Github上申請一個免費的賬号,然後将代碼上傳到這上面。但是,這是公共的平台,其它所有人均可以自由下載下傳代碼,這對于公司内部使用來說,不太安全。還好開源軟體給我們提供了很多選擇,比如:Gitblit、GitStack、Gitolite等。Gitblit是一個純java庫,用來管理、檢視和處理Git資料庫,相當于Git的java管理工具。這裡我采用的是Gitblit GO版本,下載下傳位址:http://www.gitblit.com/

1> 安裝java

      yum install java-1.6.0-openjdk

2> 安裝gitblit

      gitblit預設安裝目錄為/opt/giblit,先建立/opt/giblit目錄

      tar -zxvf gitblit-1.6.0.tar.gz -C /opt/giblit

      gitblit在centos下安裝的實際執行檔案為:service-centos.sh

      安裝腳本install-service-centos.sh的内容為:

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

      其實,它就是将service-centos.sh拷貝到啟動目錄下,并設為開機自啟動。

      修改http端口:

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

      執行安裝  ./install-service-centos.sh

3> 啟動gitblit服務

      service gitblit start

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

      從以上錯誤中,應該可以看出是java的版本太低。重新安裝較高版本的java:jdk-7u55-linux-x64.rpm。

      通路:http://192.168.85.169:8443/

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

      預設賬号和密碼為:admin/admin

      admin登陸後修改密碼。

      建立使用者,并建立第一個版本庫:

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

     本地建立HelloWorld項目,并将代碼送出到版本庫。

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

    建立一個helloworld.c檔案,僅輸出一句HelloWorld,并送出版本庫。

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

    現在在Gitblit的web端即可以看到版本庫的送出記錄。

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

    這裡顯示的時間是8小時前,是因為我本機的時間與安裝gitblit的伺服器的時間不一緻。

四、Jenkins與Git內建使用

Jenkins可以基本上可以與任何的版本控制系統繼承,這主要依賴于它豐富多樣的插件,這裡我們利用它與Git版本控制系統內建。

“系統管理”-> “管理插件”-> 在可選插件中選擇一下這三個插件,然後點選安裝,它同時會将依賴的其它插件包都下載下傳下來,這種方式通常很慢,還可以我們自己将插件包下載下傳下來,放在Jenkins安裝目錄下的plugins目錄下,插件就可以直接安裝了,下載下傳位址 : https://updates.jenkins-ci.org/download/plugins/

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

需要下載下傳的包有:

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

上傳到/var/lib/jenkins/plugins目錄,重新開機jenkins: service jenkins restart,再次檢視已安裝插件中,已經存在上面的那三個插件。

五、項目內建開發執行個體

最後,我們利用Jenkins來自動建構HelloWorld的項目,主要完成,編譯、打包的過程。

1> 建立建構任務

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

2> 配置項目

     在源碼管理中選擇Git,然後填寫相關資訊:

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)
【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

     這裡在填寫Repository URL的時候,有可能會出現以下的錯誤:

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

     這是因為Git的版本太低了,預設的Centos6安裝的Git版本是1.7.1,問題解決連結:

     http://serverfault.com/questions/589386/unknown-option-git-config-local-reported-by-jenkins

     解決辦法:更新Git版本,解決連結:http://itekblog.com/update-git-centos/

    1) 下載下傳rpm包

         wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.e16.rf.x86_64.rpm

    2) 安裝rpm包

        rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

        rpm -i rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

    3) 修改repo檔案

        yum clean all

        vim /etc/yum.repos.d/rpmforge.repo

        将[rpmforge-extras]中的 enabled = 0 修改為 enabled = 1

   4) 更新Git

        yum update git

       git --version ===> 目前git版本更新為:1.7.12.4

3> 儲存更改,測試建構

     點選立即建構:

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

    可以檢視建構過程:

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

   在jenkins安裝目錄下的jobs檔案夾下存在我們的建構項目HelloWorldBuild,在它下的workspace下即為版本庫中的代碼:

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

4> 添加腳本,進行自動編譯

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

    再次執行建構,檢視控制台輸出,可以看到我們的腳本在最後被執行:

【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git內建)

六、總結

       以上介紹了Jenkins的安裝配置,以及它與Git配合應該如何使用,這裡還有很多的一些特定沒有介紹,包括:email提醒功能、多項目建構等。其最大的魅力在于腳本的編寫,根據不同的腳本,可以執行的任務要多的多。例如:制作安裝包,最終直接打包成最終的安裝包等,就完全通過腳本來完成。

       周末一下午的工作,加油!!