前言
小公司做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
这俩算是国内做的比较好的了,缺点自然是收费