本地编译
流程图
具体流程
1 开发push时触发
2 Github-webhooks触发jenkins
3 Jenkins compile and build
3.1 Sh -ex Prera Maven builder java Shell (builder 前的shell)
3.2 Maven builder java
3.3 Sh -ex Maven builder java after shell (builder 后的shell)
3.4 Maven Deploy war/ear to a container 发送到其他的tomcat(热部署)
3.5 Send build artifacts over SSH 登陆到指定的liunx上执行shell
3.5.1 登陆到ssh
3.5.2 Cd 到指定目录
3.5.3 从jenkins服务器中下载源文件到ssh中
3.5.4 执行shell (必须在ssh中存在的*.sh)
3.5.4.1 Docker rmi -f :
3.5.4.2 Shell中通过Dockerfile builder images
3.5.4.3 Docker tag
3.5.4.4 Docker push
3.5.4.5 Docker run
3.5.4.6 Curl 其他ssh 执行 docker pull | run
3.6 Send build artifacts over SSH 登陆到集群的liunx上执行shell
3.6.1 Docker rmi
3.6.2 Docker pull
3.6.3 Docker run
4 Java项目初始化的时候,发邮件,通知tester。
dockerHub编译(有空再试)
原理
利用dockerHub可以关联github自动构建,来减掉本地docker编译和push的时间,注意dockerHub是异步的
流程图
具体流程
- 开发push时触发
- Github-webhooks触发jenkins
- Jenkins compile and build
i. Maven builder java
ii. builder 后的shell == 把war推到github上 - git publisher 创建tag
- github-webhooks在tag时触发自动构建
- 利用dockerHub-webhooks触发jenkins其他集群配置利用ssh docker rmi && pull && run (不要使用ssh到其他直接docker,异步可能出现那边还在builder中,pull下来老images,缓存问题,所以不管是单机的还是集群都不要这样使用,单机的就用本地编译再push吧)
参考资料
- Jenkins内置环境变量的使用 - 贺满 - 博客园
- Jenkins进阶-发布后自动创建git tag(5) - 梦雨情殇 - 博客园
- github+jenkins+maven+docker自动化构建部署 - 张晨雪的博客 - CSDN博客