使用jenkins自动构建spring boot+gradle项目

发表于 2024-06-16 | linux

前言

小公司做CI/CD,真的是需要社区强大的,不然你很多想要的功能都找不到,dockerhub被屏蔽很多都有网络问题,具体解决方式参考我上一篇的文章。

注意:图例会有类似Dashboard > Manage Jenkins这样的标识,通过这个来识别在图里的设置是在哪个目录

插件

Docker plugin

我们需要一个插件,去构建并且push镜像

SCM Skip

自带是有根据commit跳过的,但是感觉支持的不太好

Publish Over SSH

这个是要ssh去指定服务器执行命令用的

配置

中文在这配置了

docker插件配置

github配置

ssh配置

开始

一开始选自由风格就好了

docker stop $(docker ps -a | grep "inyaa-gateway" | awk '{print $1}')
docker rm -f $(docker ps -a | grep inyaa-gateway | awk '{print $1}')
docker rmi $(docker images | grep inyaa-gateway | awk '{print $3}')
docker run -d -p 8001:8001 --name inyaa-gateway --network inyaw --network-alias inyaa-gateway ccr.ccs.tencentyun.com/inyaa/inyaa-gateway:latest

大概意思是停止和删除旧的,安装新的,实际肯定不能像我这么干,最起码要1.0、1.1、1.2保留几个版本之类的方式。

dockerfile

这里其实没啥好说的,openjdk记得改,dockerhub下载不下来的。

FROM openjdk:21-jdk-slim
 
#将本地项目jar包拷贝到Docker容器中的位置
ADD build/libs/inyaa-gateway.jar ./
EXPOSE 8001
#开机启动
ENTRYPOINT ["java","-jar","/inyaa-gateway.jar"]
# ENTRYPOINT ["java","-jar","/inyaa-gateway.jar", "--spring.profiles.active=pro"]

结束与对比其他CD/CD

teamcity

初见特别舒服,他导入我github的项目之后,自动识别了里面的dockerfile和gradle,自动生成了构建流程 缺点:配置要求太高,2H2G的服务器卡死了

drone

这个是go写的,优点是超级轻量级,使用方式和github action有些相似,早些年我发过类似脚本,他的 缺点:最新版本有bug,有些功能跑不起来,github上面bug都开1年了

云效/coding

这俩算是国内做的比较好的了,缺点自然是收费