转载请携带:
作者:xjtushilei
原文:http://xjtushilei.com/2017/04/27/PublishAProject2Server/
~
项目是实验室和北京 xx 公司合作的项目,关于知识图谱的,涉及知识图谱的创建、管理、可视化等,主要是自己完成的。由于第一次自己参与到正式的代码集成中,之前的不是特别正规,故记录一下。
流程
源码 -> Gitlab -> Jenkins -> docker 容器管理器
一个自动化的流程,很是方便!
源码
使用 Spring-Boot 框架写的 web,当时他们公司主要在使用 SpringMVC。
接下来主要就是使用构建工具的问题了。
该项目要求使用 gradle,但是当时比较熟悉 maven,实验室不知什么原因 gradle 网速很差(虽然都是 maven 仓库),发现 maven 可以直接转 gradle,直接使用命令
gradle init --type pom
还是十分方便的,所以我同时维护了 gradle 和 maven。
src 根目录中:我们加入了“deploy/dockerfile 文件"! 方便自动生成 docker!
Gitlab
我的版本控制平台自己使用的话,一般都是在国内的 git 平台:coding.net 或者 OsChina,如果开源的话会推入 github 等。
OsChina 由于免费项目数有 1000 个,所以之后会将个人的仓库使用在 OsChina 上。
小技巧:我读 github 的源码喜欢将代码导入到国内的仓库里,比如 coding.net,这样网速比较方便,且有手机客户端随时查看!
gitlab
介绍:使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。功能和 github 类似,相当于自己有一个 github 公司的全部的服务。
可以从 gitlab 官网下载代码,在自己服务器上搭一个。
xx 公司就是自己搭建的 gitlab,并且是社区版本,他们之前使用的版本控制是 svn,因 svn 有各种问题,后转为了 git。他们使用的社区版,并打算最近转为企业版。
创建账号,然后和其他 git 平台一样,都可以导入仓库。这一步也是十分简单的。
tips:如果想体验 gitlab 服务而不想搭建,可以在“天池大数据”比赛中,注册账号,就有一个 gitlab 账号,然后使用阿里的 gitlab。
Jenkins
Jenkins 是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
- 1、持续的软件版本发布/测试项目。
- 2、监控外部调用执行的工作。
这里主要是自动从 gitlab 上,下载代码,构建编译测试代码,可以选择随意的构建工具等其他设置,可以自己加入脚本,比如生成 docker!
这一步,将 giblab 和一些脚本配置一下,使点击一个按钮,就可以自动拉取代码,生成一个 docker 镜像!
docker 容器管理器
目前我使用到的:
- 监控 dokcer,发现一个工程较新的 docker(有时间标签)会自动部署,并将原来的停掉,几乎是无缝替换。
- 提供日志监控
- 容器 ip,提供域名服务,自动配置该项目的二级域名
- docker 运行监控,宕机自动重启,监控报警
- 测试
- 持续交付
xx 公司使用的是灵雀云,从灵雀云官网介绍看!灵雀云完全能替代掉 Jenkins 的功能,但是不知为何加入了 Jenkins,第一想法是提高架构部门的工作复杂度而变得高大上(因为公司有一个基础架构部),或许我是错的,大家怎么想?
这一步就是将生成的 docker 放进去容器中,并进行各种监控等后续步骤。
感想
自动化流程确实不错!不过在实验室推广就没必要了。没有去过公司的可以了解一下~
接触这些新的东西很是开心。
自己继续加油!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于