原因: 項目開發(fā)時 前端提交頁面后 當(dāng)測試人員需要測試最新的功能時 就需要我執(zhí)行一下 自動部署命令
雖然已經(jīng)把自動部署的功能集成到了一個命令中 但是每一次需要點一下按鈕 我還是覺得很麻煩,那么就需要當(dāng)開發(fā)人員提交代碼到svn上時 能自動打包 自動部署 而且如果打包失敗可以發(fā)郵件通知剛提交代碼的開發(fā)人員檢查代碼.
我們項目的架構(gòu)是 idea + gradle + kotlin + spring boot + mybatis + angular+(自動化代碼生成工具) 前后端分離
也就是說我們項目 要部署的話有以下的步驟
1svn 更新代碼
2前端打包 生成html和js
3后端打包 生成war包
4上傳至測試服務(wù)器
5執(zhí)行deploy.sh
這個腳本有兩個 一個是部署tomcat(springboot內(nèi)置) 另一個是weblogic部署的
如果是tomcat的 作用是 1 停止舊的war包 2 啟動新的war包
如果是weblogic 使用weblogic.Deployer部署命令 1關(guān)閉該項目 2 卸載該項目 3上傳新的war包 4 啟動新的war包
4和5的執(zhí)行可以利用gradle ssh插件hidetake 然后寫一個task
task upload(dependsOn: war) doLast {
ssh.run {
session(remotes.smsserver_1) {
put from: 'build/libs/autotest.war', into: '/deploy/war'
execute 'sh /deploy/war/deploy.sh autotest'
}
}
}
當(dāng)執(zhí)行g(shù)radle upload 那么就會先打war包 再把war 文件復(fù)制到遠程服務(wù)器 在執(zhí)行部署腳本
這些命令都可以集成npm中
也就是說 直接執(zhí)行 npm run deploy 就可以直接執(zhí)行上面5個步驟
TeamCity 集成
一 svn提交后自動執(zhí)行 npm run deploy
teamcity上創(chuàng)建項目后 配置 Build Step teamcity的流程大概是隔一分鐘監(jiān)測svn是否有提交 有提交就
執(zhí)行配置的Build Step
二 部署失敗發(fā)送郵件
先根據(jù)svn的用戶 在teamcity創(chuàng)建相同的用戶并配置好他們的郵箱 然后配置Email Notifier
teamcity默認規(guī)則 當(dāng)部署失敗會默認給用戶發(fā)送郵件
三 部署失敗自動發(fā)微信
由于開發(fā)人員并不在意郵箱 導(dǎo)致即使發(fā)了郵件 也沒人管失敗的構(gòu)建 于是就想 如果構(gòu)建失敗就給開發(fā)人員發(fā)微信
1獲取teamcity構(gòu)建失敗的信息 包括項目信息以及提交人的信息
teamcity-rest-client 可以獲取失敗的構(gòu)建
https://github.com/JetBrains/teamcity-rest-client
2 server醬 可以發(fā)微信 http://sc.ftqq.com/3.version
那么思路就很簡單了 寫一個java項目 跑在服務(wù)器上 每隔10分鐘 通過teamcity-rest-client獲取最新失敗的構(gòu)建
找到提交的用戶信息 然后通過server醬 發(fā)送微信提醒