typora-root-url |
---|
./ |
使用过 gitlab cicd 功能的朋友应该都知道,这是gitlab提供的能够在你提交代码时触发的持续集成功能。使用cicj需要在您服务器的内网中安装一个 runner。流刀上线工具客户端的作用和这个runner其实差不多,是帮助您团队实现在测试、预发布、线上环境进行部署的一个工具
无论是瓦力还是cicj,重点都放在了部署上,且重点都放在了代码级别的部署上。cicj相对来说功能更强大,但配置繁琐。cicj的语法规则非专业人事很难配置。流刀上线工具 http://h5.companyclub.cn/ 相对他们来说除了能够完成代码级别的部署功能以外,还拥有以下特色:
地址:http://h5.companyclub.cn/login 账号:test@qq.com 密码:Test123456
项目/微服务管理
每个项目由一个或多个微服务构成。
微服务管理 可以配置微服务名称、git文件夹目录、主分支、线上服务器、线上数据库、部署目录、打包前执行的名称、需要打包的目录、打包排除文件、部署后执行命令等。
提交上线单
勾选该项目下需要上线的微服务,填写微服务需要上线的分支,如需在线上建表,可填写sql语句。另外也支持配置job服务器执行job指令等。
完整的上线流程管控
提交上线单->部署到测试环境->测试环境测试通过->部署到预发布环境->预发布环境测试通过->代码上线。
全流程自动化。各流程通过企业微信/钉钉进行通知相关人员。
注册账号 点击跳转到 流刀上线工具 注册
部署客户端工具(参照下面的方法在自己团队的服务器上部署客户端工具,并开放9535端口对团队成员开放)
在网页 团队设置 - 客户端 中填写 客户端工具部署的对团队成员开放的ip和端口号。
创建项目。
创建时可以填钉钉、企业微信的机器人hook,上线工具用于团队成员自动发布各种通知。
创建完成后进行到项目中的项目设置页面,需要填写项目的开发、测试、上线人员(可以是同一个人)。
在创建该微服务之前,先登录到您安装客户端工具的那台服务器,cd 到 /usr/local/onlinetool/reponsitory/ 目录下(无论你是用那种方式安装的客户端工具,运行后都会自动创该目录的)。执行类似如下命令 `git clone [该微服务的地址] -b [微服务的主分支] [项目名(英文)]_[微服务名(英文)]`
创建微服务时的 **git文件夹目录** 填写上面的 **[项目名(英文)]_[微服务名(英文)]`** ,创建微服务时会涉及到您填写测试、预发布、线上环境服务器、数据库的连接信息,不用担心这些隐私泄露的问题,因为这心内容不会上传到平台,保存在您运行客户端工具的服务器上的的 `/usr/local/onlinetool/config` 文件中。其他内容根据您团队项目的实际情况填写。
在项目左侧的列表中点击提交上线单,主要填写的内容是您本次上线的内容描述,需要上线的微服务,每个微服务需要上线的分支,这个微服务上线前需要执行哪些sql语句。上线完成之后需要创建、重启哪些job等。
上线工具会将上线流程推送到测试人员那边,有他选择测试环境进行自动部署,测试人员点击测试通过后会推送到上线人员那里,由他来决定是否在预发布环境测试或者直接上线。
上线工具上线的原理是什么?
在测试、预发布环境部署是通过连接到部署的服务器,执行分支切换脚本、源代码编译脚本以及job相关脚本进行部署的。在线上服务器部署,我们在客户端服务器上进行分支合并、代码编译最后将部署内容打包成tar包,分发到需要部署的每一台服务器上。最后进行压缩包的解压部署流程。
如何进行迭代部署?如何进行重新部署?
在测试、预发布、线上每一次部署之前,我们都会在客户端机器下记录当前git的commitID,当前部署已经成功执行掉的sql语句,已经成功创建的job。无论是迭代部署还是重新部署,已经执行过的sql语句都不会重复执行,已经创建的job也不会重复创建(但会重新reload相关job)。迭代部署相对于重新部署,会检测对应git的commitID是否发生变化,只部署在上次部署之后,发生过代码变化的分支,也只执行之前没有执行过的sql语句和job脚本。
可能存在哪些问题?
该部署工具在原理上参照 瓦力上线工具 ,是通过在目标服务器上创建文件的方式进行部署,可能存在上线过程中出现线上服务有报错的情况。因此,应尽量避免业务访问高峰时上线代码。同时,如果做好负载均衡,通过切换部署服务器的方式也可以避免这样的问题。
从发布页面下载jar包:https://gitee.com/onlinetool/liudao/releases ,然后有两种方式可供选择。
自己安装jdk进行部署
mkdir /usr/local/onlinetool && chown -R [当前用户名]:[当前用户所在的组] /usr/local/onlinetool
nohub java -jar onlinetool_client-1.0.1.jar &
使用docker部署
Dockerfile 内容如下(读者根据实际情况进行修改):
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD ./.ssh /root/.ssh
ADD onlinetool_client-1.0.1.jar app.jar
EXPOSE 9535
# 这是我为了远程调试用的的
# EXPOSE 5005
# ENTRYPOINT ["java", "-Xdebug", "-Xnoagent", "-Djava.compiler=NONE", "-Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n", "-jar", "/app.jar"]
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
编译镜像 docker build -t onlinetool_client .
运行容器 docker run -it -d -p 9535:9535 -v /usr/local/onlinetool:/usr/local/onlinetool onlinetool_client
使用中有任何问题可以直接与我沟通,微信如下:
fanghailiang2023
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。