OneDev实现自动构建
以下是在1Panel中通过OneDev实现Spring Boot项目自动化构建部署的完整方案,包含Git Push触发配置:
一、前置条件
- 已通过1Panel安装Docker引擎(系统设置→容器服务→安装Docker)
- 已部署OneDev(通过1Panel应用商店安装或Docker命令部署)
二、项目配置步骤
1. 创建OneDev项目
- 访问OneDev控制台(
http://服务器IP:6610
) - 新建项目:
- 项目类型:空白项目
- 关联Git仓库(支持GitHub/Gitee/GitLab等)
- 示例仓库地址:
https://gitee.com/yourname/springboot-demo.git
2. 配置CI/CD流水线
在项目根目录创建 .onedev/buildspec.yml
文件:
1 | version: 21 |
3. 配置Dockerfile
在项目根目录创建 Dockerfile
:
1 | # 使用官方Maven镜像构建 |
4. 配置Git Webhook
在Git仓库设置中添加Webhook:
- 触发URL:
http://your-onedev-ip:6610/git/notifyCommit?url=${repoUrl}
- 触发事件:
Push Events
三、自动化触发流程
- 代码推送 → Git发送Webhook到OneDev
- OneDev自动执行CI/CD流水线:
- 检出最新代码
- Maven编译打包
- 构建Docker镜像并推送
- 通过SSH更新目标服务器容器
四、验证部署
- 首次手动触发构建:
- 进入OneDev项目 → CI/CD → 手动运行
build
任务
- 进入OneDev项目 → CI/CD → 手动运行
- 检查构建日志:
- 确认Maven构建成功
- 确认Docker镜像推送成功
- 测试自动触发:
- 提交代码到Git仓库 → 观察OneDev自动启动构建
- 检查目标服务器容器版本:
docker service ps springboot-demo
五、高级配置建议
环境隔离:
1
2
3
4
5
6
7environments:
prod:
variables:
JAVA_OPTS: -Xmx512m
test:
variables:
JAVA_OPTS: -Xmx256m金丝雀发布:
1
2
3- ssh:
commands:
- docker service update --update-parallelism 1 --image new-image springboot-demo回滚机制:
1
2
3- ssh:
commands:
- docker service rollback springboot-demo
六、常见问题处理
Docker权限问题:
- 确保OneDev容器挂载了Docker套接字:
1
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
- 确保OneDev容器挂载了Docker套接字:
构建缓存优化:
1
2
3- dockerBuild:
cacheFrom:
- yourregistry.com/springboot-demo:latest构建超时处理:
1
2
3- exec:
command: mvn package
timeout: 1200 # 单位:秒
该方案实现了完整的GitOps流程,通过OneDev原生能力替代传统Jenkins方案,具有配置简单、资源占用低的优势。实际部署时需根据网络环境调整镜像仓库地址和SSH密钥配置。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 adong的博客!
评论