在Redhat enterprise 6.5 的服務器上,為在gutub 上的 .net 項目構建一個持續集成環境,用到了Jenkins和mono。因公司的服務器在內網,訪問外網時要通過代理,所以在很多步驟都加上了代理,如果你的服務器可以直接訪問外網,則可以去掉代理。
1 安裝
首先要在Redhat服務器上安裝必要的工具。
1.1 安裝Java
- 先檢查版本,要求1.7及以上
java –version
java version "1.5.0" gij (GNU libgcj) version 4.4.6 20110731 (Red Hat 4.4.6-3)
- 移除舊版本
sudo yum remove java
- 安裝1.7
sudo –syum install java-1.7.0-openjdk –nogpgcheck
有時在pgp check時會報錯,所以加上了這個參數
1.2 安裝Jenkins
sudo wget -e "http_proxy=http://proxyip:8080" -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --httpproxy "http_proxy=http://proxyip:8080" --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins
注意上面都用到了proxy,如果你的服務器能直接連外網,可以把proxy去掉
1.3 安裝Mono
為了方便測試 .net 的項目,我們安裝下Mono:
$ sudo yum -y install bison gettext glib2 freetype fontconfig libpng libpng-devel libX11 libX11-devel glib2-devel libexif glibc-devel urw-fonts java unzip gcc gcc-c++ automake autoconf libtool make bzip2 wget $ cd /usr/local/src $ sudo wget http://download.mono-project.com/sources/mono/mono-4.0.1.44.tar.bz2 $ sudo tar jxf mono-4.0.1.44.tar.bz2 $ cd mono-4.0.1 $ sudo ./configure --prefix=/opt/mono $ sudo make $ sudo make install
export PATH=$PATH:/opt/mono/bin export PKG_CONFIG_PATH=/opt/mono/lib/pkgconfig
參考《http://help.octopusdeploy.com/discussions/problems/39756-install-mono-on-centos-66》
2 配置
2.1 啟動Jenkins
cd jenkins
sudo java –jar jenkis.war
這時如果出現下面的錯誤:
javax.jmdns.impl.HostInfo newHostInfo
WARNING: Could not intialize the host network interface on null because of an error: MDRADEL0: MDRADEL0: Name or service not known
java.net.UnknownHostException: MDRADEL0: MDRADEL0: Name or service not known
則需要改下hosts文件
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
16.173.233.21 nis-sh-02
16.173.233.20 nis-sh-01
16.173.233.20 nis-sh-01
16.173.233.20 nis-sh-01
改成如下內容:
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost MDRADEL0
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
16.173.233.21 nis-sh-02
16.173.233.20 nis-sh-01
16.173.233.20 nis-sh-01
16.173.233.20 nis-sh-01
這個錯誤,我先沒當回事,但后面在界面上操作時會出現很多錯誤。
如果你想啟動Jenkins還想在redhat服務器上做其它操作,也可以用下面的方式來啟動jenkins:
sudo service jenkins start
啟動完后,就可以在本機瀏覽器上用 http://serverip:8080 打開 jenkins了:
2.2 配置Jenkins
安裝插件
打開 系統管理 –》 插件管理 –》 可選插件
如果發現里面為空時,要到 “高級”tab里右下角,點擊 “立即獲取”。
如果點擊 “立即獲取”按鈕時報錯:
java.net.ConnectException: Connection timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
看是不是要設置代理:
在“可選插件”里選中 git 、github plugin 和 msbuild 安裝。
系統設置
打開 系統管理 –》 系統設置, 設置 git 和 msbuild 選項:
這里要注意的是 Path to MSBuild : /opt/mono/bin/xbuild
后面不能帶.exe, 不然在后面“立即構建”時會報錯:找不到這個文件。這個path,可以在安裝完mono后,用下面的命令查出:
whereis xbuild
xbuild: /opt/mono/bin/xbuild
2.3 配置項目
新建一個 “構建一個自由風格的軟件項目”
- 填寫git項目的信息:
添加構建步驟,選擇前面創建好的“mono”:
3 測試
點擊左邊菜單的“立即構建”:
在 Build History 下面可以看到Build的結果,紅色是失敗了。
如果失敗了,可以打開這條失敗記錄的 “Console Output” ,查看失敗的原因:
我創建的是一個最簡單的unit test項目,所以里面會有一個 Microsoft.VisualStudio.QualityTools.UnitTestFramework 的引用,因為Redhat 只是安裝了mono,並沒有安裝 .net framework, 所以找不到這個引用,於是新建一個目錄,把這個dll添加進項目里,再引用這個目錄下的dll:
再次點擊 “立即構建”,成功了。