微服务项目持续集成部署流程
什么是持续化集成(continous itergration)?为了加快软件开发速度,加强团队成员间的合作力度,简化项目的部署流程,使用一种自动编译、打包、测试、发布等技术来实现自动化的集成项目。在实现这一目标之前,我们需要做较多的前提工作:
- Gogs安装,主要用个人的git服务替代github等等网站,把代码和控制权力掌握在自己手上。总之,Gogs就是个人版的github和码云。
- jekin使用流程的理解
Gogs容器的安装与应用
Gogs是一款简单、易用的git服务软件,和码云,github的性质一样,我们可以将代码push到这个自己搭建的git服务上。本文针对微服务项目进行讲解,微服务+docker是比较完美的组合,因此Gogs也才用docker容器来部署,具体的搭建步骤如下:
(1)下载Gogs镜像到本地
docker pull gogs/gogs
(2)创建并启动gogs容器
docker run -di --name=test_gogs -p 10022:22 -p 3000:3000 -v /var/gogsdata:/data gogs/gogs
gogs/gogs
(3)配置gogs
当gogs容器启动后,我们输入相应的http://ip:3000可以访问到gogs应用的后台,在后台配置一些基本信息,如该gogs管理版本库所需要的数据、该服务的访问地址(当前宿主机的ip地址)等,这里选择其自带的小型嵌入式关系型数据库sqlite,当然也可以选择mysql等其他数据库。
(4)用户注册和配置
和github、码云提供的git服务一样,注册用户即可使用。
(5)创建仓库,与在github上的操作类似
注意 由于gogs容器中的ssh端口被映射为宿主机的10022端口,所以在使用ssh协议与gogs进行交互时,会有冲突,暂时无法使用,需要比较繁琐的配置,这里推荐先使用http协议。即3000端口所对应的协议。关于ssh协议的连接,后面有时间在做详细的探索
(6)为了避免使用git提交源代码到gogs仓库出现commit rejection的错误,新建仓库时候,最好不要添加任何文件,即创建一个空白的项目,这个错误的根本原因是因为本地仓库的代码与远程仓库的代码不一致所产生的冲突,哪怕是一个空格也不行。
jenkins实现持续的集成
jenkins是一款开源的用于代码集成处理的工具,通过使用git插件和maven插件来实现自动化集成项目的功能,因此在安装完jenkins时候,还需要安装两个必要的插件:git和maven,git用于从git服务器上(github或者gitee)下载源码,maven用于管理项目所用到的所有依赖,这里不对具体的细节展开讨论,只对该工具的大概使用流程做一个描述罢了!!!(只有明白每一步配置的原因才行,碰到问题,具体搜寻答案,思路最重要,解决问题的技巧很重要,找到问题的关键点很重要,相信理性的魅力!)
因此jekins集成需要完成以下各个关键步骤:
(1)jekins安装
(2)jekin中git插件和maven插件的安装(两个插件分别用于连接主机git和maven到jekin中,使得jekin可以使用主机中的git和maven)
(3)全局的工具设置
- 配置jekins所在主机的java环境
- 配置jekins中的git环境(git在主机中的安装位置)
- 配置jekins中的maven环境(maven在宿主机中的位置,包括maven仓库的位置)
(4)使用jekins创建集成项目 - 在jekins中构建maven项目
- 配置要连接的git服务器地址(github gitee gogs等),使用能从这些git服务其上下载源代码
- Build(配置项目的pom.xml文件;执行构建命令)
# 这其实是maven命令,只是jekins执行了maven命令;
#pom.xml文件是包含了依赖包坐标和相应的构建工具:dockers-maven工具等
clean package docker:build ‐DpushImage
(5)点击执行,jekins根据pox.xml文件中插件和依赖的配置,自动实现部署.