最近公司裏的一個項目由要發佈到阿里雲上,爲了一勞永逸採用jenkins結合ansible作了自動化部署,期間各類小坑,都一一解決,惟一的一個大坑,傷神了一下午才解決掉!由於項目架構是基於springboot的,因此直接jar包運行,爲了方便直接把運行jar包作成了centos的服務,可是自建服務的Type=forking 沒有進行設置,卻是一運行啓動正常了就關閉,以前還加了重試機制,致使服務一直在重啓。
雖然是個小記錄,可是在這裏你能大概瞭解一下自動化部署相關的一些東西,以及centos7的服務建立相關東西.
另外鼓勵項目,尤爲是springboot項目都用自建服務的方式來進行部署安裝,由於用systemctl能直接控制,journalctl調試查看日誌真的是太方便了。java
安裝與配置很少說,主要是新建一個任務裏的配置,由於這裏須要ansible,因此須要提早安裝一下ansible插件。git
配置裏代碼庫裏配好git路徑spring
在構建的shell裏作編譯代碼腳本以及本份,跟ansible playbook的調用(ansible相關能夠查看我以前寫的ansible入門那篇文章)shell
#定義常量
WORKSPACE=`pwd`
WAR_DIR=${WORKSPACE}/target
JAR_PRE=哈哈哈(包的名字)*.jar
JAR_HOME=/data/yiran/build
JAR_BAK=/data/yiran/build_history
DATE=$(date +%Y%m%d%H%M%S)
JAENAME=action${DATE}.jar
#編譯包
mvn clean package -Dmaven.test.skip=true
#備份
mv ${JAR_HOME}/${JAR_PRE} ${JAR_BAK}/
mv ${WAR_DIR}/${JAR_PRE} ${JAR_HOME}/${JAENAME}
#ansible版本邏輯is 1.中止服務 2.啓動服務
ansible-playbook -i /etc/ansible/hosts yrServer /data/yiran/yaml/first.yaml --extra-vars "jarName=${JAENAME}"
---
- hosts: yrServer
vars:
srcHome: /data/yiran/build
descHome: /usr/local/xxx/bin
remote_user: root
tasks:
- name: copy files
copy: src={{srcHome}}/{{jarName}} dest={{descHome}}/xxx.jar
- name: reload xxxservice
service: name=xxx enabled=yes state=restarted
略
在/usr/lib/systemd/system 下建立xxx.service 賦754權限centos
[Unit]
Description=service‘s desc
After=network.target
[Service]
User=root
Group=root
Type=forking
ExecStart=/usr/local/xxx(這裏是你根據你實際狀況建的文件夾)/bin/server.sh
#Restart=always
#RestartSec=10
TimeoutSec=60
[Install]
WantedBy=multi-user.target
在 /usr/local/xxx(這裏是你根據你實際狀況建的文件夾)/bin/ 下建立server.shspringboot
#!/bin/bash
nohup /usr/bin/java -jar /usr/local/xxx/bin/xxxx.jar --spring.profiles.active=prod &
echo Start Success!
jenkis裏點擊當即構建,在服務器上netstar -lnp|grep 80 ,查看服務器已經啓動,運行正常bash
相關命令:systemctl stat/status/stop/enable/… xxx(建立的服務名)
journalctl -u xxx(服務名) -f -b服務器
略。。。。
8月 24 11:08:39 localhost.localdomain server.sh[115642]: 11:08:39,242 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
8月 24 11:08:39 localhost.localdomain server.sh[115642]: 11:08:39,243 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@133314b - Registering current configuration as safe fallback point
////////////////////////////////////////////////////////////////////
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //// 佛祖保佑 永不宕機 永無BUG //////////////////////////////////////////////////////////////////////8月 24 11:08:43 localhost.localdomain server.sh[115642]: MyBatisConfiguration.pageHelper()其餘略。。。。