1背景
這是這種多人協同開發,自動構建,自動部署的方案。就不用自己打包,然後上傳部署了,解放人力,便於管理。這裏只是簡單介紹各自軟件的使用與集成,其實不論svn和maven還有很多實用的用法,svn的管理規劃,maven的倉庫等。
svn用來做代碼版本管理,maven用來編譯,tomcat是web容器,jenkins是自動化構建的工具。這裏沒使用nginx來做方向代理,以後做
軟件版本
jdk1.8
tomcat8-部署jenkins,端口8080
tomcat7-部署應用web項目,端口8090
jenkins2.46
maven3.5
2安裝jenkins
2.1安裝jdk
官網下載,解壓,改名,修改配置文件,最後使用java -version驗證,非常簡單。不過多描述
2.2安裝tomcat8
官網下載,解壓,改名
2.3安裝jenkins
然後把jenkins的war放入tomcat的webapp(/home/tomcat8/webapps),然後啓動tomcat
/home/tomcat8/bin/startup.sh
2.4修改防火牆,開通8080端口
vim /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT
重啓防火牆service iptables restart
訪問url
http://192.168.247.141:8080/jenkins/
這裏按照他的提示,進行密碼驗證。
more /root/.jenkins/secrets/initialAdminPassword
下面安裝插件
選擇插件,就安裝推薦的吧
然後是慢長的等待,然後輸入用戶名和密碼
這裏wangqi,wangqi,[email protected]
插件安裝完成之後
2.5自己安裝插件
安裝SSH Slaves plugin(運行shell命令),Maven Integration plugin(構建maven項目),
Deploy to container Plugin(部署應用web)。
在jenkins的系統管理-插件管理-可選插件中可以選擇
3安裝svn
3.1查是否已經安裝svn
rpm -qa subversion
如果已經安裝,請刪除yum remove subversion
3.2yum安裝
yum install subversion
mkdir /home/svn/game
svnadmin create /home/svn/game
cd /home/svn/game
ll
conf目錄是配置文件,db目錄就是放置各個版本的代碼(加密)
3.3規劃svn與配置svn
規劃:
策劃組:開策劃、美術讀寫
後端組:開後端讀寫,策劃只讀
前端組:開前端讀寫,策劃、美術只讀
美術組:開美術讀寫,策劃只讀
管理員組:所有的讀寫
權限配置
vim /home/svn/game/conf/authz
rw的含義是讀寫
[game:/server]
@server=rw
這個含義是server用戶可以多svn的game下面的server目錄有讀寫權限
[groups]
#管理組
manager = boss
#服務端用戶組
server = server1,server2
#客戶端用戶組
client = client1,client2
#美術組
art = art1,art2
#策劃組
design=design1,design2
[game:/]
@manager=rw
[game:/server]
@server=rw
[game:/client]
@client=rw
@design=r
@art=r
[game:/art]
@design=rw
@art=rw
@client=r
[game:/design]
@design=rw
@server=r
@client=r
@art=r
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
修改用戶密碼
vim /home/svn/game/conf/passwd
[users]
boss=123456
server1=123456
server2=123456
client1=123456
client2=123456
art1=123456
art2=123456
design1=123456
design2=123456
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
修改svn服務
vim /home/svn/game/conf/svnserve.conf
auth-access = write
anon-access = read
password-db = passwd
authz-db = authz
realm =game
- 1
- 2
- 3
- 4
- 5
防火牆開發svn端口
vim /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3690 -j ACCEPT
service iptables restart
3.4啓動svn服務
svnserve -d -r /home/svn/
-d:守護進程
-r:svn根目錄
假設服務端IP爲192.168.247.141,那麼如下設置後game的訪問目錄就爲:
svn://192.168.247.141/game
svn客戶端使用烏龜(tortoise svn安裝直接下一步),找一個目錄checkout,如果成功svn就安裝成功。
4安裝maven
從 http://maven.apache.org/ 下載
解壓,改名
tar -zxvf apache-maven-3.5.0-bin.tar.gz
rm -rf apache-maven-3.5.0-bin.tar.gz
mv apache-maven-3.5.0/ maven3.5
配置環境變量
vim /etc/profile
M2_HOME=/home/maven3.5
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$M2_HOME/bin
- 1
- 2
修改maven的配置,vim settings.xml
<localRepository>/home/maven3.5/jar</localRepository>
- 1
然後把自己的maven的jar拷貝到jar中,不然的會,會重新下載
基礎的軟件已經準備好了。
5 spring tool suit
我是使用spring tools suit編寫代碼,這裏通過help-install已經安裝了svn的插件哈。
右鍵項目-temp-shareproject-選擇svn
然後填寫svn連接,賬戶,密碼,就可以上傳去了。安裝提示一步一步走就可以了。
上傳svn成功之後,項目就會出現如圖的連接,說明代碼已經被svn管理了。
6使用jenkins構建部署web應用
6.2新建一個job
這裏選擇自由風格,項目名nsfw-server
然後配置這個job
6.2配置job的svn
配置svn,這裏特別注意svn的路徑,需要指定到項目名哈
這裏使用svn的boss用戶,boss用戶具有所有目錄的讀寫權限
6.3構建計劃
每晚8點運行,時間自己改哈,配置方式和crontab的一樣
6.4構建環境
這裏需要先source /etc/profile,不然不能使用mvn命令(我這裏確實是這樣),這裏的ssh(需要先裝ssh插件哈),需要在系統配置
6.5構建方式
構建方式選擇invoke top-level maven targets。
goals是maven命令,setting是maven的配置路徑
clean install的意思是刪除以前編譯過的target,然後重新編譯生成war
6.6自動部署到web容器
war路徑是相對於jenkins的workspace目錄的相對路徑
我的全路徑:/root/.jenkins/workspace/nsfw-server/nsfw-server/target/nsfw-server.war
/ 代表的是會把crm.adminWeb.war 換成ROOT.war放到 tomcat的webapps目錄.
/nsfw-server,不是在root目錄,就是webapp下面的就好
tomcat的信息主要是用戶名和密碼(來自tomcat-users.xml)。
jenkins好像支持tomcat7的部署
這裏插播一個tomcat7的安裝,這裏主要配置一個tomcat-userx.xml。
<role rolename="manager-gui"/>
<user username="wangqi" password="wangqi" roles="manager-gui"/>
- 1
- 2
- 3
使用這個wangqi用戶,可以執行部署命令就可以。
job的配置已經完成
6.7執行構建
手動執行構建
下面的那個小圓點,就可以看執行的日誌。
從日誌中可以看出,已經mvn編譯出來了war包,然後部署到了tomcat服務器,最後finished:success。
查看tomcat的是否部署完成
訪問http://192.168.247.141:8090/nsfw-server/pic/upIndex,成功
自動化構建成功。
ps:
1如果mvv -s * clean install,能在機器上運行,但是jenkins不能運行,那麼一定是環境變量的問題,使用在構建之前使用source /etc/profile
2如果你修改了svn的代碼,上傳之後,馬上執行構建可能會不成功,因爲svn版本沒有同步,過一會就可了,就幾分鐘。