自動部署過程:jenkins從svn拉取代碼+maven去打war包+ansible去部署+重啓tomcat。java
前情回顧:在前面的文章個人環境已經有Jenkins+ansible ,在加上咱們公司有本身的SVN,我只要在本地安裝個Tomcat就ok啦。linux
其實也有Tomcat的,但我喜歡本身玩本身的,誰讓我是菜鳥了呢,這其中的坑真的很多,但願能幫到初學者。git
一. 什麼是Maven(簡單說一種打包的工具)?web
Maven項目對象模型(POM),能夠經過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。shell
Maven 除了以程序構建能力爲特點以外,還提供高級項目管理工具。因爲 Maven 的缺省構建規則有較高的可重用性,因此經常用兩三行 Maven 構建腳本就能夠構建簡單的項目。因爲 Maven 的面向項目的方法,許多 Apache Jakarta 項目發文時使用 Maven,並且公司項目採用 Maven 的比例在持續增加。apache
你也許會問爲何是Maven,不是Ant。咱們公司的java項目用的是pom文件。若是你的是built文件,那就能用ANT,爲何用POM,不是我這個小運維人員說的算的,你須要去找開發老大。tomcat
1)官網下載Maven(jenkins的插件裏面有maven,我以爲本身安裝的可控性更高一些)app
root@debian :~# wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz運維
2)解壓下載的包webapp
root@debian :~# tar -xf apache-maven-3.5.0-bin.tar.gz -C /usr/local/
3)簡單驗證一下
root@debian :~# mvn --version
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: /usr/local/apache-maven-3.5.0
Java version: 1.7.0_71, vendor: Oracle Corporation
Java home: /usr/local/jdk1.7.0_71/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.16.0-4-amd64", arch: "amd64", family: "unix"
4)接下來在jenkins裏面配置一些環境(登陸你的jenkins界面)
標記的很是明顯,點擊系統管理。
接下來點擊Global Tool Configuration ,主要配置有下面幾項
提示: (1)這裏的最好指一下setting文件,這個文件須要更改的,好比本地倉庫放在那,打包過程用沒用到nexus(私服),若是你不知道怎麼改,問大家研發部門,他們都是行家。
(2)在前面的文章裏面我說過爲何jdk換成了7(實際上是在setting文件裏面定義的),爲了和這個自動化上線的項目保持環境的一致行,其實8也兼容7,具體行不行我沒有試驗過呢。
(3)若是你已經指定了本地的插件路徑,就不要勾選自動安裝那個選項。
若是你的路徑和個人不同,須要修改爲相對應的路徑就ok啦。
二.Jenkins的插件下載
1)步驟和上面幾乎差很少,點插件管理
2)這裏我就列出幾個,你能夠根據提示缺乏那個插件你就安裝那個
由於我要用到playbook,因此要安裝ansible插件。
maven的本地倉庫,不懂的話多去問問研發,少走點彎路。
這個是svn的插件,由於總有一個版本控制,你是git,就去下載git的插件。
這個插件有必要說一下,一開始我打算用這種tomcat熱部署,後來查了查,這種部署方式有自然的缺陷,部署的次數多了之後會形成java的內存泄漏,再加上咱們上線的全部環境不是都打在war包裏面的,後來就放棄了,做爲運維來講,我的以爲多一事不如少一事。
三.項目的配置過程(只說對我有用的部分)
1)在你的jenkins登陸頁面,點擊新建
2)構建一個maven項目(名字你隨便起,建議最好有一點標識性)
3)最後點擊OK,來到下面的界面
描述信息你能夠隨便寫,甚至空着也能夠的。
4)SVN這裏須要你有一個賬號,簡單說就是能拉取代碼
5)構建觸發器
觸發器的做用應該是自動化構建,它也能夠像定時任務那樣,每隔多長時間自動構建一次
6)剩下直接上圖
說明:若是你不明白的話,多去查一查,具體什麼意思,我也只是知道怎麼用。
四.Tomcat的安裝
1)官方下載Tomcat7(最新的版本應該是9,這裏我下載的是7)
root@debian1:~# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.77/bin/apache-tomcat-7.0.77.tar.gz
說明: 若是你用debian自帶的源安裝tomcat,也能夠。但你的目錄結構和你解壓二進制包的目錄結構是不同的,這是坑。用過debian的應該都知道,它把配置文件分的太細啦,固然信不信你說的算。
2)解壓Tomcat並啓動Tomcat
root@debian1:~# tar -xf apache-tomcat-7.0.77.tar.gz -C /usr/local/
root@debian1:~# /usr/local/apache-tomcat-7.0.77/bin/startup.sh
提示:由於個人jenkins佔用着8080端口,在本機想啓動Tomcat的話須要更改一下配置文件server.xml
3)簡單驗證一下
root@debian1:~# netstat -antlp |grep 8082
tcp6 0 0 :::8082 :::* LISTEN 11981/java
五.Playbook的書寫,代碼奉上(水平較次,您將就着看)
- hosts: local tasks: - name: "create the tmp directory!" command: mkdir /usr/local/tmp - name: "delivery the war to the remote_host!" copy: src=/var/lib/jenkins/workspace/maven_test/target/oa.war dest=/usr/local/tmp/ - name: "unzip the war!" command: unzip -qo /usr/local/tmp/oa.war -d /usr/local/apache-tomcat-7.0.77/webapps/ROOT/ - name: "delete the tmp" command: rm -rf /usr/local/tmp - name: "stop the tomcat" shell: "ps -ef |grep tomcat |grep /usr/local/apache-tomcat-7.0.77 | grep -v grep |awk ‘{print $2}‘ |xargs kill -9" - name: "start the tomcat" shell: chdir=/usr/local/apache-tomcat-7.0.77/bin nohup ./catalina.sh start &
說明: (1)在上面的文件裏面用startup.sh 啓動tomcat起不來,用catalina.sh start & 就能夠啓動起來,具體什麼緣由我也不是很清楚,由於我以爲兩種方式是同樣的。
(2)注意一下yaml(yml)文件的書寫合適,還有就是jenkins自動構建的war包在workspace下有一個和你項目名稱同樣的文件夾,但war包的名字是由POM文件裏面定義的,與jenkins是無關的。
(3)在這裏我是本地用ansible的copy模塊,固然你也能夠遠程copy,但注意hosts文件定義該主機,免密鑰登陸等等,還有就是權限問題,須要特別注意,jenkins這個工具是一直在用jenkins這個普通用戶在運行。
六.構建Project
1)構建你的項目
2)能夠查看過程的輸出
3)看到success 就大功告成啦(須要燒香拜佛的喲)
其實還有不少功能,例如構建成功發郵件通知,sonar對java代碼進行靜態檢查等等我只記錄了一些我用到的。
建議: (1) 若是沒有成功,看相應的報錯,有問題去解決問題,這麼個流程我研究了兩週,我老大說我進度慢,沒辦法,都是本身研究,我把過程記錄就是但願和我同樣的少踩點坑,歡迎來噴。
(2)有句名言叫外事不懂問GOOGLE,內事不懂問度娘。