您正在查看:标签 drone 下的文章

Drone下多工程项目使用Commit日志控制子工程运行

最近拖延症犯了,一个文章标题写了一个月才写了个标题... 不高兴.png

前言

自从入坑Drone CI/DI以来,我极力推荐在小微项目上使用Drone来完成自动构建,主要是轻量化,安装配置方便 吐舌.png ,
只需写一个docker compose文件即可完成Drone的安装配置,
只需写一个.drone.yml即可完成接入,极为方便;

Drone更深一层探究

经过我的不懈努力,经主管同意,最终也在公司项目上使用上了Drone来逐步替代Jenkins进行小项目微服务的自动构建部署 太开心.png

但是实际使用中发现一个问题,即SpringBoot工程,通常是一个主工程下包含多个微服务子工程,使用drone不太好控制其中某一个工程的自动构建部署,总不能每次都重新构建整个服务,然后重启所有工程吧,这样效率也太低了 不高兴.png

//多工程目录结构,本文主要演示SpringBoot多工程项目自动构建部署
demoParant
├── common   //公共工程
├── api      //API工程
├── user     //用户工程
└── back     //后台工程

能想到的最简单实现的方式就是来通过不同的分支来触发不同的构建任务,这样理论上可行,但是实际操作会产生一堆分支,显得极为不整洁,并且正常开发也是开发一个分支,测试一个分支,生产一个分支,太多了操作起来也不方便 黑线.png

所以最理想的方式也就是在同一个分支下,通过某种方式来触发不同的构建任务;

Drone的启发

在Drone CI下有一个默认功能,即在Commit log中输入[CI SKIP]即可跳过本次自动构建,于是我就想能否通过Commit log来控制本次部署具体哪个子工程,这样下来我只要在输入commit log的时候输入需要构建的工程,即可完成对应工程的自动构建部署,并且不影响同项目下的其他工程;

初步设想的原理就是在drone执行部署命令时,通过自定义脚本完成工程部署,并将commit log作为参数传入脚本,在脚本中判断commit log中是否指定某些工程的运行的参数,如果不指定则默认运行所有工程 乖.png

例如:我提交commit日志update Admin.java; add admin management interface; [CI API] [CI BACK];
这样一来,经过drone自动构建后,只重新部署了API工程和后台工程;

具体实现

具体实现可参考如下脚本:

- 阅读剩余部分 -

使用Gitea+Drone来搭建自己的轻量级CI/CD自动构建平台

上一次我们使用Gitea搭建了自己的Git版本控制系统,可以用来管理自己的代码
还需要一个自动构建工具来解放生产力,这里我推荐使用Drone来搭建CI/CD持续集成,持续部署平台 你懂的.png
为什么选用Gitea+Drone呢?因为这两款软件都是基于go编写的,运行过程中可谓十分轻量级,对于资源的占用都是很少的,并且都可以基于docker来安装,安装部署起来十分方便
相对来说主流的Gitlab+Jenkins一套下来对于资源的占用,个人是很难能流畅运行的,至少我的机器连个Gitlab都跑不起来,更别提使用Java编写的Jenkins了。。。 汗.png
废话少说,直接开搞~ 滑稽.png
这里我的服务器环境使用的是最新的CentOS7 x64系统,只安装了一个docker


1 安装Gitea

Gitea的安装过程详见:https://ffis.me/experience/1960.html
这里就不做过多的阐述了

2 安装Drone

新版的Drone可以直接使用OAuto2和drone进行通信,无缝集成,配置完成后只需要得到gitea的授权即可进入drone平台,连账户和密码都不用输了

- 阅读剩余部分 -