[原創]CI持續整合系統環境---部署Jenkins完整記錄

散盡浮華發表於2016-07-07

 

Jenkins通過指令碼任務觸發,實現程式碼的自動化分發,是CI持續化整合環境中不可缺少的一個環節。
下面對Jenkins環境的部署做一記錄。
--------------------------------------------------------------------------------------

1)安裝java(yum安裝java1.7)
java環境安裝參考:Centos中yum方式安裝java

[root@115 ~]# java -version
java version "1.7.0_111"
OpenJDK Runtime Environment (rhel-2.6.7.2.el6_8-x86_64 u111-b01)
OpenJDK 64-Bit Server VM (build 24.111-b01, mixed mode)
[root@115 ~]# which java
/usr/bin/java
[root@115 ~]# ll /usr/bin/java
lrwxrwxrwx. 1 root root 22 Oct 30 01:29 /usr/bin/java -> /etc/alternatives/java
[root@115 ~]# ll /etc/alternatives/java
lrwxrwxrwx. 1 root root 46 Oct 30 01:29 /etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java

[root@115 jvm]# pwd
/usr/lib/jvm
[root@115 jvm]# ll
total 4
lrwxrwxrwx. 1 root root 26 Oct 30 01:29 java -> /etc/alternatives/java_sdk
lrwxrwxrwx. 1 root root 32 Oct 30 01:29 java-1.7.0 -> /etc/alternatives/java_sdk_1.7.0
drwxr-xr-x. 9 root root 4096 Oct 30 01:29 java-1.7.0-openjdk-1.7.0.111.x86_64
lrwxrwxrwx. 1 root root 35 Oct 30 01:29 java-1.7.0-openjdk.x86_64 -> java-1.7.0-openjdk-1.7.0.111.x86_64
lrwxrwxrwx. 1 root root 34 Oct 30 01:29 java-openjdk -> /etc/alternatives/java_sdk_openjdk
lrwxrwxrwx. 1 root root 21 Oct 30 01:29 jre -> /etc/alternatives/jre
lrwxrwxrwx. 1 root root 27 Oct 30 01:29 jre-1.7.0 -> /etc/alternatives/jre_1.7.0
lrwxrwxrwx. 1 root root 39 Oct 30 01:29 jre-1.7.0-openjdk.x86_64 -> java-1.7.0-openjdk-1.7.0.111.x86_64/jre
lrwxrwxrwx. 1 root root 29 Oct 30 01:29 jre-openjdk -> /etc/alternatives/jre_openjdk

由此可知,java的home目錄是/usr/lib/jvm/java-1.7.0-openjdk.x86_64

設定java的環境變數
[root@115 ~]# vim /etc/profile
.......
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

使之生效
[root@115 ~]# source /etc/profile

[root@115 ~]# echo $JAVA_HOME
/usr/lib/jvm/java-1.7.0-openjdk.x86_64
[root@115 ~]# echo $CLASSPATH
.:/usr/lib/jvm/java-1.7.0-openjdk.x86_64/jre/lib/rt.jar:/usr/lib/jvm/java-1.7.0-openjdk.x86_64/lib/dt.jar:/usr/lib/jvm/java-1.7.0-openjdk.x86_64/lib/tools.jar

------------------------------------------------------------------------------------------------------------------------------
上面java的環境變數一定要設定!不然tomcat啟動會失敗,會有以下報錯:
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
------------------------------------------------------------------------------------------------------------------------------

2)安裝tomcat環境
安裝包下載地址:https://pan.baidu.com/s/1bDHT5G
提取密碼:btir

將下載的apache-tomcat-7.0.42.tar.gz包解壓放到/usr/local目錄下,改名為tomcat7。
即tomcat路徑為/usr/local/tomcat7

3)安裝jenkins

jenkins安裝包下載地址:http://pan.baidu.com/s/1o7T26Rg

提取密碼:aeka

直接將 jenkins.war拷貝到/usr/local/tomcat7/webapps目錄下,webapps目錄下原來的內容全部刪除
[root@115 webapps]# pwd
/usr/local/tomcat7/webapps
[root@115 webapps]# ll
-rw-r--r--. 1 root root 63664946 2月 3 22:26 jenkins.war

修改tomcat的配置檔案,確保使用UTF-8編碼(如下新增URIEncoding="UTF-8"),以防jenkins出現中文亂碼:
[root@115 conf]# pwd
/usr/local/tomcat7/conf
[root@jenkins-server conf]# vim server.xml
........
<Connector port="8080" URIEncoding="UTF-8" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

設定系統環境變數,在/etc/profile底部新增下面內容
[root@115 conf]# vim /etc/profile
.......
JENKINS_HOME="/usr/local/tomcat7/webapps/jenkins"
export JENKINS_HOME

使之生效
[root@115 conf]# source /etc/profile
[root@115 conf]# echo $JENKINS_HOME
/usr/local/tomcat7/webapps/jenkins

然後重啟tomcat服務

[root@115 webapps]# /usr/local/tomcat7/bin/startup.sh

[root@115 webapps]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 45515 root 46u IPv6 47030248 0t0 TCP *:radan-http (LISTEN)

[root@115 webapps]# pwd
/usr/local/tomcat7/webapps
[root@115 webapps]# ll
total 62180
drwxr-xr-x. 9 root root 4096 Oct 30 20:39 jenkins
-rw-r--r--. 1 root root 63664946 Oct 30 20:38 jenkins.war

然後訪問http://ip/8088/jenkins即可!

登陸jenkins後,可以在“系統管理”的Configure Global Security建立使用者,建立後還需要註冊後才能登陸。

=======================溫馨提示====================

注意tomcat版本問題,本案例中的jenkins.war包適用於tomcat7版本。tomcat版本如果出現不相容問題,會導致webapps下的應用問題(比如資料目錄被莫名情況等問題)

另:
上面的jenkins環境部署伺服器只有內網ip(192.168.1.25),沒有外網ip。
那麼訪問是通過具有外網ip(比如是113.110.186.5)伺服器NAT埠轉發進行的。

操作如下:

1)在113.110.186.5/192.168.1.5機器上進行NAT埠轉發設定,由8080埠轉發到192.168.1.25的8080埠:
[root@bastion-IDC ~]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.1.25:8080
[root@bastion-IDC ~]# iptables -t nat -A POSTROUTING -d 192.168.1.25/32 -p tcp -m tcp --sport 8080 -j SNAT --to-source 192.168.1.5
[root@bastion-IDC ~]# iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
[root@bastion-IDC ~]# service iptables save
[root@bastion-IDC ~]# service iptables restart

確保nat埠轉發設定成功後,/etc/sysconfig/iptables檔案裡要註釋掉下面兩行!不然nat轉發會有問題!
一般如上面在nat轉發規則設定好並save和restart防火牆之後就會自動在/etc/sysconfig/iptables檔案裡刪除掉下面兩行內容了。
[root@bastion-IDC ~]# vim /etc/sysconfig/iptables
..........
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
[root@bastion-IDC ~]# service iptables restart

開啟ip路由轉發功能
[root@linux-node1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
或者
[root@linux-node1 ~]# cat /etc/sysctl.conf
..........
net.ipv4.ip_forward = 1

[root@linux-node1 ~]# sysctl -p

2)在192.168.1.25上關閉防火牆
首先關閉防火牆
[root@115 ~]# service iptables stop

設定閘道器為192.168.1.5
[root@115 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
......
GATEWAY=192.168.1.5
......
[root@115 ~]# /etc/init.d/network restart
或者
[root@115 ~]# route add default gw 192.168.1.5

[root@dev-new-test1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 192.168.1.5 0.0.0.0 UG 0 0 0 eth0

最後測試訪問jenkins:
http://113.110.186.5:8080/jenkins就可以正常訪問到192.168.1.25的8080埠了

注意左下角設定”中文簡體“翻譯當前頁

 

由於上面已經在/etc/profile裡新增了$JENKINS_HOME,所以在jenkins介面裡”系統設定“裡可以看到jenkins的主目錄就是$JENKINS_HOME

 

 

------------------------------------------------------------------------------------------------------------------------------------
jenkins作為發版系統的用處:
在jenkins裡面新增工程,在工程裡新增對應的專案
在專案配置裡的“程式碼管理”環節,配置svn或git(需要另行下載git外掛)程式碼下載(比如svn和git的url),將svn程式碼下載到jenkins對應的專案即job的workspace下;
然後在“構建”->“Excute shell”裡編寫rsync指令碼(或在jenkins本機編寫指令碼,這Excute shell這裡指明指令碼路徑)釋出到遠端的目標機器上。

如果jenkins的“管理外掛”裡沒有可選外掛供安裝,或者沒有最新外掛,可以點選“高階”->“升級站點”(採用預設的站點地址http://updates.jenkins-ci.org/update-center.json)->“立即獲取”。獲取後,可選外掛就會更新。

相關文章