【SpringBoot+码云】实现项目可持续集成,解放双手
背景
开发项目时,每次完成一两个功能,都需要部署到线上测试。以前都是先在本地打包,然后利用工具将本地jar包和线上测试服务器的jar替换,然后再重启项目。
后来,想使用gitlab+Jenkins做的持续集成,但是由于我们的项目是maven多模块项目,利用Jenkins实现子模块单独打包进行部署有些麻烦,然后就自己想出这个办法,灵活性非常高。供大家借鉴
流程
- 利用码云仓库的webhooks监听每次仓库的push请求
- 获取每次请求的信息备注中的特定标识
- 使用代码远程连接服务器,执行对应的启动命令
- 实现自动化部署
服务器安装所需环境
在你需要可持续集成的服务器上安装 jdk,maven,git;
安装完成后 需要在/etc/profile和登录服务器的用户的家目录下的.bashrc配置jdk,maven的环境变量
服务器拉取仓库代码
在服务器的某个文件夹下 将项目拉取到服务器
mkdir /project
git clone git@........
创建一个SpringBoot项目
提供码云webhooks推送消息的接口
/**
* @author Zebra_LMW
* @date 15/4/2020下午 4:44
*/
@RestController
@RequestMapping("hot")
public class HotController {
@PostMapping("push")
public Object hotOne(@RequestBody Map map) throws IOException {
new JobsBuildThread(map).start();
return "任务已提交:详细信息请查看:【https://***************/info.txt】";
}
}
/**
* @author Zebra_LMW
* @date 17/4/2020下午 4:55
*/
public class JobsBuildThread extends Thread {
private Map map;
public JobsBuildThread(Map map){
//map对象里面具体是什么东西 码云上可以进行测试 自行查看
this.map = map;
};
@Override
public void run() {
//TODO
//这里可以解析推送来的信息进行处理,然后执行相应的逻辑
//我这里是使用ganymed这个工具包,连接服务器
//想看demo的留言
}
}