流程图
准备工作
- 需要在服务器上搭建git仓库gogs
- 需要在服务器上搭建docker镜像仓库Harbor
- 需要在服务器上搭建构建平台Jenkins,并配置git仓库,maven和SSH
执行的流程
- 手动push代码到gogs
- 手动在gogs上打tag,触发Jenkins执行任务
- Jenkins自动从gogs上pull代码
- Jenkins自动用maven对代码打包
- 项目打包完之后会push镜像到仓库(这个是在springboot项目中配置的)
- Jenkins通过SSH远程执行脚步,pull镜像,运行容器
注意事项
maven需要使用阿里的镜像,不然非常慢,办法是修改settings.xml
具体过程
gogs
pull镜像并运行
docker pull gogs/gogs
docker run -p 10022:22 -p 10080:3000 --name=gogs \
-v /mydata/gogs:/data \
-d gogs/gogs
登录
http://119.29.177.27:10080/
初始化配置
新建仓库->push代码
webhook配置
Jenkins
安装和登录
安装
docker pull jenkins
docker run -p 8080:8080 -p 50000:5000 --name jenkins \
-u root \
-v /mydata/jenkins_home:/var/jenkins_home \
-d jenkins
docker logs jenkins 获取密码
登录
http://119.29.177.27:8080/
前期配置
插件安装
- gogs
系统配置
- 连接服务器的sh
全局工具配置
- 配置mavne: 这个maven是我手动上传上去的
全局安全配置
- 这里要去掉勾选
创建Jenkins任务
配置git
选择maven
选择要执行的脚本
- 准备脚本
#!/usr/bin/env bash
app_name='demo'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker run -p 8088:8088 --name ${app_name} \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/${app_name}/logs:/var/logs \
-d ${app_name}:1.0-SNAPSHOT
echo '----start container----'
- 把脚本上传到服务器的/mydata/sh/目录下,并执行
chmod -x /mydata/sh/demo.sh
- 执行shell:
执行Jenkins任务
执行流程
- 从git pull代码>maven clean package>docker build images>docker run
Harbor
注意
一个是docker login
一个是修改springboot项目中pom.xml中的docker配置,要配置推送镜像到仓库
参考
http://www.macrozheng.com/#/reference/harbor_start