標籤:style blog http color java os 使用 io 檔案
文章目錄結構如下:
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資產庫加入本機。
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/訪問, 注意此時要關閉防火牆。
7> 配置使用者安全訪問
現在,我們來配置Jenkins的安全認證。預設情況下Jenkins“允許任何人做任何事情”,這裡我們將採用基於矩陣的安全認證,其實就是許可權列表。
點擊“Configure Global Security”-> “Jenkins專有使用者資料庫”-> “允許使用者註冊”,點擊儲存。儲存後,在右上方就出現了註冊的按鈕。
點擊註冊,填寫相應的資訊後,點擊儲存。
現在,我們將限制使用者註冊,採用“基於安全矩陣的授權策略”。
將Jenkins專有使用者資料庫下的“允許使用者註冊”勾掉,在授權策略中選擇“安全矩陣”,在添加使用者/組中,填寫剛才註冊的帳號,並為他選擇所有的許可權列表。
現在,剛剛添加的houqd2012使用者在登陸後就可以管理Jenkins了。其它,註冊的使用者,可以利用houqd2012在帳號管理中分配不同的許可權。
添加使用者:“系統管理”-> “系統管理使用者”-> “建立使用者”
賦予許可權:houqd2012管理員帳號登陸,在“Configure Global Security”中分配許可權:為user01分配很小的許可權,這樣就可以對帳號,以及各自擁有的許可權進行統一的配置了。
三、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的內容為:
其實,它就是將service-centos.sh拷貝到啟動目錄下,並設為開機自啟動。
修改http連接埠:
執行安裝 ./install-service-centos.sh
3> 啟動gitblit服務
service gitblit start
從以上錯誤中,應該可以看出是java的版本太低。重新安裝較高版本的java:jdk-7u55-linux-x64.rpm。
訪問:http://192.168.85.169:8443/
預設帳號和密碼為:admin/admin
admin登陸後修改密碼。
建立使用者,並建立第一個版本庫:
本地建立HelloWorld項目,並將代碼提交到版本庫。
建立一個helloworld.c檔案,僅輸出一句HelloWorld,並提交版本庫。
現在在Gitblit的web端即可以看到版本庫的提交記錄。
這裡顯示的時間是8小時前,是因為我原生時間與安裝gitblit的伺服器的時間不一致。
四、Jenkins與Git整合使用
Jenkins可以基本上可以與任何的版本控制系統繼承,這主要依賴於它豐富多樣的外掛程式,這裡我們利用它與Git版本控制系統整合。
“系統管理”-> “管理外掛程式”-> 在可選外掛程式中選擇一下這三個外掛程式,然後點擊安裝,它同時會將依賴的其它外掛程式包都下載下來,這種方式通常很慢,還可以我們自己將外掛程式包下載下來,放在Jenkins安裝目錄下的plugins目錄下,外掛程式就可以直接安裝了, : https://updates.jenkins-ci.org/download/plugins/
需要下載的包有:
上傳到/var/lib/jenkins/plugins目錄,重啟jenkins: service jenkins restart,再次查看已安裝外掛程式中,已經存在上面的那三個外掛程式。
五、項目整合開發執行個體
最後,我們利用Jenkins來自動構建HelloWorld的項目,主要完成,編譯、打包的過程。
1> 建立構建任務
2> 設定項目
在源碼管理中選擇Git,然後填寫相關資訊:
這裡在填寫Repository URL的時候,有可能會出現以下的錯誤:
這是因為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> 儲存更改,測試構建
點擊立即構建:
可以查看構建過程:
在jenkins安裝目錄下的jobs檔案夾下存在我們的構建項目HelloWorldBuild,在它下的workspace下即為版本庫中的代碼:
4> 添加指令碼,進行自動編譯
再次執行構建,查看控制台輸出,可以看到我們的指令碼在最後被執行:
六、總結
以上介紹了Jenkins的安裝配置,以及它與Git配合應該如何使用,這裡還有很多的一些特定沒有介紹,包括:email提醒功能、多項目構建等。其最大的魅力在於指令碼的編寫,根據不同的指令碼,可以執行的任務要多的多。例如:製作安裝包,最終直接打包成最終的安裝包等,就完全通過指令碼來完成。
周末一下午的工作,加油!!
【大話QT之十七】Jenkins介紹及安裝使用文檔(與Git整合)