一、爲響應後端開發人員需求,提高項目開發過程效率,選擇Jenkins持續構建,進行導包啓動一鍵持續集成html
思路:
使用jenkins自帶,當即構建->SVN拉取代碼,經過Jenkins安裝的mvn編譯進行打包,並自動化啓動後端服務前端
致謝:
工做崗位的上一任,留給我不少資料進行查閱,感蟹!!java
一、下載tomcat軟件,gz壓縮包,存放到須要配置的Linux服務器上
二、 官網下載jenkins,將jenkins壓縮包,解壓後,放置到tomcat-->webapp目錄下
三、 進入tomcat-->bin目錄-->./startup.sh啓動命令
配置時需注意事項:
一、須要修改tomcat-->config文件夾-->server.xml
(啓動tomcat時,須要netstat查看tomcat啓動的默認8080端口是否已經被佔用,若是已經被佔用,vim編輯server.xml文件,找到8080端口,進行修改,以下所示:)node
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> 修改後: <Connector port="3030" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
二、如啓動tomcat後,進入127.0.0.1:3030檢查,Tomcat是否正常啓動起來 ,若是沒法正常查看,則須要執行如下命令,關閉防火牆服務linux
service iptables stop
一、Linux需安裝jdk_1.8,這裏能夠按照本身的喜愛進行下載
二、下載解壓安裝jdk成功後,須要進入etc/profile環境配置以下變量
(我這裏下載解壓後的jdk,是放置到了/opt目錄下)web
JAVA_HOME=/opt/jdk1.8.0_141 JAVA_BIN=$JAVA_HOME/bin JRE_HOME=$JAVA_HOME/jre JRE_BIN=$JAVA_HOME/bin PATH=$JAVA_BIN:$JRE_BIN:$PATH export JAVA_HOME JRE_HOME PATH
一、 Tomcat起來後進入訪問頁面:服務器IP地址:端口號/jenkins
二、訪問Jenkins成功,進行默認選擇進行下一步,下一步安裝
三、安裝插件時,能夠根據本身的喜愛進行安裝的啦,這裏就不概述啦shell
1、配置後臺服務Maven打包時須要的jdk/mavennpm
2、配置前端服務npm打包時所需nodeJsvim
source /etc/profile # 應ssh遠程鏈接是no-login狀態,則須要每次執行source /etc/profile配置 pid=`ps -ef |grep "other"|grep -v 'grep'|awk '{print $2}'` if [ $pid ]; then #若是存在已啓動的項目進程,則kill掉,沒有則不進行處理 kill -9 $aa fi cd /data/ if [ $? -eq 0 ]; then rm -rf /data/xqb-other-1.0.0.jar else mkdir -p /data/ fi setsid java -jar xxxx.jar > nohup.out
一、安裝jenkins時,出現大部分插件,自動下載失敗,從新retry後,還是如此,待解決後端
二、昨天一天晚上,自信滿滿的認爲本身能夠很快的能解決好Jenkins持續構建打包後端服務,結果折騰了差很少半天時間,端午放假的最後一天班,還一我的加班到了最晚,這就是技術人,沒有技術的加班血淚史鴨
其中遇到的問題有自身的問題、以及技術方面欠缺的問題,總結以下:
(1)、細節沒有注意到,編寫構建腳本時,每一個Maven項目,寫的目錄因copy現有的,致使存在不少小字眼寫錯了,這裏須要面壁思過了,細節決定成敗,細節決定成敗呀,都是血淚史~~
(2)、Mvn編譯打包後,在PostStep下,Jenkins沒有將打包好後的xxx.jar包,正常遠程傳輸到制定的路徑下
(3)、打包完成後,腳本啓動命令,沒有正常被執行,致使傳輸後的jar包,沒法正常啓動起來
遇到這個問題時,思考的方向是SSH配置用戶名和密碼是否正確,檢查沒有問題後,才第一時間是,查詢了jenkins 項目中的poststep中各個輸入框的用法,畢竟仍是知識理論更重要
編譯打包文成後,就須要配置post step,該模塊是在你Jenkins編譯打包完成後,執行的動做
須要介紹的點是:
SSH Server:用戶須要ssh傳輸jar包的服務器
Source files:傳輸的源文件,這裏按照Jenkins的默認路徑是當前的job項目的工做路徑,好比:
jenkins中建立的每一個job工程項目,對應會在Jenkins安裝目錄下的workspace空間下自動建立
如:
jenkins在linux下默認的安裝路徑是如下路徑
/root/.jenkins/
我建立的Job工程名字爲jenkins,則構建成功後,會在如下的路徑,生成jenkins文件夾,以下所示
/root/.jenkins/workspace/jenkins
source files,是我要打包完成的jar進行上傳到其餘服務器,因此我這裏寫的是target/*.jar
Remove prefix:這裏表示上傳後,不須要建立的target目錄,因此這裏須要填寫target,表示上傳完成後,不會在對應指定的目錄下再生成一個/target目錄,而是直接把*.jar包直接上傳到指定的目錄裏
Remote diretory: 好比我要把*.jar包,放置到tomcat的webapp裏,則我這裏就填寫 webapp,上傳包後須要存放的地方
Exec command: 這裏填寫須要啓動jar包的命令
例子:
setsid java -jar xxx.jar > nohup.out &
這裏參考原文地址(推薦):[原文]http://www.javashuo.com/article/p-qkwdnspe-kd.html
使用上面的setid啓動jar包命令後,看到進程老是啓動到一半後,
ps -fe |grep java
看到進程正常啓動後一半,就自動停掉了,可是將上面的命令直接放在服務器上root用戶下,直接執行時確可以執行成功,後來通過研發童鞋的指點,說在jenkins這裏的命令,命令確定是沒有被啓動起來,或者jenkins沒有執行這行命令權限
通過思考推敲後,進行百度搜索無心間看到有位博主也遇到相似問題,才發現時ssh遠程操做執行命令時,時non-login狀態,ssh遠程執行該命令時,是須要不會執行/etc/profile裏面定義的變量的,而恰好jdk的配置,在/etc/profile文件裏,因此ssh Server模塊的腳本里,須要加上以下source /etc/profile:
source /etc/profile setsid java -jar xxx.jar > nohup.out&
這裏參考原文地址(推薦):[原文]http://blog.sina.cn/dpool/blog/s/blog_64693fd40101eyyh.html
最後輕鬆解決了上面害我加班的問題,真的是在你最無奈的時候,那麼你就該要好好的靜下心來,學習了。
一、寫代碼(更新代碼),push到SVN服務器
二、當即構建Job--> checkout SVN代碼-->編譯打包-->上傳服務器-->自動啓動執行jar服務
三、登錄使用項目,一體化,是否是爽歪歪呢,跟本身作好一道美味的菜後,最後有人幫把美酒倒了,飯給你裝了,筷子給你拿了,你直接開吃的效果差很少。惋惜我不是開發,哈哈哈哈