随着微服务的火热,传统的手动部署服务已经渐渐的无法满足实际工程需求,当一个项目按模块拆分成10个的时候,使用ci-自动集成模式就能完美的解决这一问题。
本文主要介绍gitlab+gitlab-runner搭建git私服+持续集成环境。
- 准备一台电脑pc或者liunx
- 安装docker
- 通过docker-compose直接部署gitlab服务,docker-compose up
version
- 账号:root
- 密码:5iveL!fe
- 访问localhost:10080,自动提示修改密码
此处gitlab搭建参考自sameersbn/docker-gitlabgithub.com
- 安装gitlab-runner服务,去官网找对应的环境安装
- 之后注册你的gitlab-runner服务
gitlab-ci-multi-runner register
- 在项目的设置内找到gitlab-runner必要的参数 域名和token
- 最后一步建议选择shell,因为作者选的是shell
- 创建一个项目并编写.gitlab-ci.yml文件,文件参考
stages:
- deploy #步骤名称
deploy:
stage: deploy #步骤名称
tags:
- strategy #标签
only:
- master #当且仅当master分支合并时 出发该ci脚本
script: #ci脚本
- mvn clean package
- "docker build . -t strategy:last"
- docker stop strategy_image || true
- docker rm strategy_image || true
- docker run --name strategy_image -p 7002:80 -d strategy:last
这里解释一下自己理解的gitlab runner工作原理和gitlab-ci.yml这个文件内容
首先 定义一个deploy工作任务
- 该任务在master分支合并时被触发且执行定义好的script脚本
由于gitlab-runner原理是 当定义的分支合并时
- 执行 git clone命令拉取该分支代码
- 在代码根目录执行脚本
所以作者的脚本应该很好理解
- 在根目录执行mvn clean package打jar包(小公司不需要测试用例 如需要请加上)
- 执行dockerfile构建镜像(因为作者的项目都是跑在docker上的)
FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/strategy.jar /app/app.jar
COPY target/lib /app/lib
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Dspring.profiles.active=prod","/app/app.jar"]
分享一下dockerfile
- 镜像很简单 copy jar包 安装java 执行
- 最后触发ci时
开发测试上线时再也不用自己手动部署项目啦