基于TeamCity的自动化部署并自动发邮件或微信
原因: 项目开发时 前端提交页面后 当测试人员需要测试最新的功能时 就需要我执行一下 自动部署命令
虽然已经把自动部署的功能集成到了一个命令中 但是每一次需要点一下按钮 我还是觉得很麻烦,那么就需要当开发人员提交代码到svn上时 能自动打包 自动部署 而且如果打包失败可以发邮件通知刚提交代码的开发人员检查代码.
我们项目的架构是 idea + gradle + kotlin + spring boot + mybatis + angular+(自动化代码生成工具) 前后端分离
也就是说我们项目 要部署的话有以下的步骤
1svn 更新代码
2前端打包 生成html和js
3后端打包 生成war包
4上传至测试服务器
5执行deploy.sh
这个脚本有两个 一个是部署tomcat(springboot内置) 另一个是weblogic部署的
如果是tomcat的 作用是 1 停止旧的war包 2 启动新的war包
如果是weblogic 使用weblogic.Deployer部署命令 1关闭该项目 2 卸载该项目 3上传新的war包 4 启动新的war包
4和5的执行可以利用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'
}
}
}
当执行gradle upload 那么就会先打war包 再把war 文件复制到远程服务器 在执行部署脚本
这些命令都可以集成npm中
image.png
也就是说 直接执行 npm run deploy 就可以直接执行上面5个步骤
TeamCity 集成
一 svn提交后自动执行 npm run deploy
teamcity上创建项目后 配置 Build Step teamcity的流程大概是隔一分钟监测svn是否有提交 有提交就
执行配置的Build Step
image.png
二 部署失败发送邮件
先根据svn的用户 在teamcity创建相同的用户并配置好他们的邮箱 然后配置Email Notifier
teamcity默认规则 当部署失败会默认给用户发送邮件
image.png
三 部署失败自动发微信
由于开发人员并不在意邮箱 导致即使发了邮件 也没人管失败的构建 于是就想 如果构建失败就给开发人员发微信
1获取teamcity构建失败的信息 包括项目信息以及提交人的信息
teamcity-rest-client 可以获取失败的构建
https://github.com/JetBrains/teamcity-rest-client
2 server酱 可以发微信 http://sc.ftqq.com/3.version
那么思路就很简单了 写一个java项目 跑在服务器上 每隔10分钟 通过teamcity-rest-client获取最新失败的构建
找到提交的用户信息 然后通过server酱 发送微信提醒