Jenkins從svn下載項目構建項目打war包發佈到遠程Linux服務器
需求
公司做了個單體項目,打war包的形式發佈到服務器上,項目初始階段需要不斷的迭代開發,那麼發佈流程是比較麻煩的,所以弄了一個jenkins CIDI持續繼承部署,來簡化後邊的流程,弄好以後,開發好的代碼提交svn主幹,點點jenkins的按鈕,即可自動從svn down最新的代碼,maven構建項目打war包,上傳到服務器,配合shell腳本自動實現舊項目的打包備份,新項目的部署,重啓tomcat。
因爲遠程服務器只有一個端口,同時公司的svn服務器是內網的,所以只能將jenkin安裝到我本地,在本地構建好war包,在部署到遠程服務器。
Jenkins的安裝和插件的安裝
jenkin的安裝不說了,插件的話主要安裝以下:
1.Deploy to container Plugin 發佈到tomcat容器的插件
2. Locale plugin 漢化插件-可以不安裝
3. Maven Integration plugin Maven插件構建項目用的
4. SSH plugin 鏈接遠程服務器要用到的SSH插件
5. Publish Over SSH 將war包發佈到服務器上的插件
6. Subversion SVN插件
配置
1.Global Tool Configuration 全局工具配置中設置好JDK和Maven路徑
2.Configure System 系統設置中,配置好遠程登錄服務器的登錄信息等
需要注意的點:
SSH Server Name: 起個名字
Hostname:遠程就寫服務器IP,本地就寫本地ip或者localhost
Username: 服務器用戶名
Remote Directory: 發佈war到遠程服務器的目錄,我這裏並沒有直接發佈到tomcat的wabapp目錄
Passphrase / Password: 服務器的密碼,如果用了祕鑰登錄,這裏填寫祕鑰的密碼
Path to key: 如果用了祕鑰登錄,這裏填寫祕鑰的地址
Key: 填寫祕鑰的內容,這裏需要把-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----都copy上,一開始這裏遇到個坑。
Port:端口號
配置好後,點擊測試連接
new 任務
1.新建一個任務,選擇構建maven項目
2.如圖,進行配置,
3. 構建項目
紅色代表報錯
藍色代表成功
黑色強制中斷
黃色是流程大部分成功,但是最後執行腳本的時候無權限導致的
輸出信息
jenkin安裝,會在你本地c盤創建其需要的配置文件等,打包構建項目都會放在這裏,安裝的插件也會放在這裏,所以你就算吧war包刪除了,只要c盤的這個配置沒刪,下次重新安裝jenkins的war包,這些插件還都存在。
總結
弄的時候遇到了一些小坑,這裏提一下,
1.一個是連接ssh服務的時候一直連不上,後來發現是祕鑰的內容copy的不全
2.maven執行命令構建項目的時候報錯了,同時加上你想要打包成的名字,因爲本地和發佈到服務器上的包名是不一樣的。
3.執行shell腳本的時候,遇到了權限問題,請教公司運維同事後解決。
附帶shell腳本,自己改吧改吧就能用
#!/bin/bash
DATE=`date +%F-%H-%M`
PROJECT_ADMIN='ROOT'
PWD='你的服務器密碼'
ROOTDIR='/data/tomcat/jenkins_workspace/temp'
TOMCAT_HOME='/data/tomcat/apache-tomcat-8.5.50-test'
#停止tomcat服務
#echo '停止test-tomcat-01'
echo ${PWD}|sudo -S sh ${TOMCAT_HOME}/bin/shutdown.sh
echo ${PWD}|sudo -S ps -ef | grep ${TOMCAT_HOME}/ | grep -v grep| awk '{print $2}' | xargs sudo kill -9
#備份
cp ${TOMCAT_HOME}/webapps/${PROJECT_ADMIN}.war /data/tomcat/jenkins_workspace/bak/${PROJECT_ADMIN}_${DATE}.war
#刪除舊項目
echo ${PWD}|sudo -S rm -rf ${TOMCAT_HOME}/webapps/${PROJECT_ADMIN}*
#rm -rf ${TOMCAT_HOME}/webapps/${PROJECT_ADMIN}.war
#將新的war包放入tomcat中
echo ${PWD}|sudo -S mv ${ROOTDIR}/${PROJECT_ADMIN}.war ${TOMCAT_HOME}/webapps/${PROJECT_ADMIN}.war
#移除文件
#rm -rf ${ROOTDIR}/*.war
#啓動tomcat服務
#echo '啓動test-tomcat-01'
echo ${PWD}|sudo -S sh ${TOMCAT_HOME}/bin/startup.sh