devops - dev.dtyunxi.cn

15
云徙科技-阿里云战略合作伙伴 1 / 15 杭州云徙科技有限公司 地址:广州市黄埔区茅岗路 88 号鱼珠智谷 A102 栋 公司主页:www.dtyunxi.com DEVOPS 工具包 敏捷开发及持续发布技术使用手册 云徙科技 版本 2.4.1

Upload: others

Post on 03-Nov-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

云徙科技-阿里云战略合作伙伴 1 / 15

杭州云徙科技有限公司

地址:广州市黄埔区茅岗路 88 号鱼珠智谷 A102 栋

公司主页:www.dtyunxi.com

DEVOPS 工具包

敏捷开发及持续发布技术使用手册

云徙科技

版本 2.4.1

云徙科技-阿里云战略合作伙伴 2 / 15

作者 版本 日期 说明

聂风([email protected]) 1.0.0 2016-10-08 基础版本

聂风([email protected]) 2.0.0 2017-05-13 发布 2.0 版本,支持分布式安装

聂风([email protected]) 2.3.0 2018-01-25 重构优化,支持多种混合中间件

聂风([email protected]) 2.3.1 2018-04-19 统一内外网安装地址,并智能判断内网安装无需密码认证

Git 源代码配置支持单个模块指定分支和标签

Git 源代码目录支持减号(-)

优化 clearlog,支持一键清理日志

聂风([email protected]) 2.3.2 2018-04-24 run 指令增加自动备份

配置文件介绍[saas]增加备份策略描述

聂风([email protected]) 2.4.0 2018-05-31 增加 edas python api 部署工具

聂风([email protected]) 2.4.1 2018-11-15 增加 edas 配置中心备份还原功能

聂风([email protected]) 2.4.2 2019-12-11 增加 make 子命令,方便一键打包

修正了 git 子命令的一些 bug

1 devops 安装介绍

1.1 简介

devops 工具包是运用 DEVOPS 开发运维融合的思想,结合 shell 脚本实现的一套自动化工

具包,包含了打包、归档、远程发布等核心功能

DEVOPS_HOME:是指 devops 根目录

devops 标准配置文件:是指{DEVOPS_HOME}/etc/devops.conf

1.2 安装

安装 devops 前会检查是否安装了 zip unzip,请确保这些工具已经安装好,如果是作为编

译打包机,还需要安装 maven git,如果是作为前端 Nginx 节点还需要提前安装好支持库

pcre gd geoip libxslt,安装方法:

切到 root:yum install -y 模块名

云徙科技-阿里云战略合作伙伴 3 / 15

1.2.1 下载 devops安装包:

sh -c "$(curl https://dev.dtyunxi.cn/devops)"

注:研发中心以外的网络需要下载密码请联系开发者

1.2.2 下载依赖模块并初始化安装节点:

./devops setup

可以使用-m 参数只拉指定的模块,支持关键字,如-m nginx,默认是拉取最新版本模块,

如果要接取历史版本请使用--legacy 选项,并最好在模块中带上模块版本,如:nodejs-6.6.0

初始化安装节点后,请退出当前会话,重新登录,即可以使用 devops 命令,运行 devops

-V 显示版本号即表示安装成功

1.2.3 编写主配置文件

结 合 实 际 项 目 情 况 , 编 写 devops 主 配 置 文 件 , 如 有 疑 问 可 联 系 开 发 者

[email protected])指导配置

1.2.4 安装应用

执行 devops install 即可,安装完成,支持-m 指定安装指定模块

本地安装:请带上--bend 或--fend 选项,两个选项可同时支持,分别表示后端模块

远程安装:--fend 表示只配置 nginx 不安装后端对应服务

云徙科技-阿里云战略合作伙伴 4 / 15

1.3 卸载:come soon

2 devops 目录介绍

apps:包含了:服务端的软件以及应用容器

服务端软件:如轻量配置中心、nginx

应用容器:在 spawn_instances 下,如 edas/springcloud 应用

bak:包含了一些配置文件的自动备份

bin: 包含工具包的执行程序

etc:包含了:

devops 主配置文件

conf.d:其它必要的配置文件,如远端密钥

git:源代码存放目录

log:包含了:

应用日志的软链接

nginx 运行 error log

pkg:打包目录

tgz:依赖模块目录

tmp:用于 devops 增量打包和临时文件存储

www:nginx web 目录

云徙科技-阿里云战略合作伙伴 5 / 15

3 devops 参数

devops 参数分为指令和可选参数两部分,指令可以指定一个动作,如应用模块编译,可选

参数用于辅助命令参数完成更为灵活的动作

3.1 git:获取源代码

可选参数:-b | --branch 指定 git 分支名称

可选参数:-t | --tag 指定 git 分支上的 tag 名称

3.2 build:编译源代码

可选参数:--deploy 编译并部署至中央仓库

3.3 package:打包

必选参数:-v | --version 指定打包版本号

可选参数:--pull [0|1]表示从服务器下载已上传好的包

可选参数:--push [0|1]表示需要打包后提交至打包服务器

可选参数:--exist 表示采用户自定义的包

3.4 run:发布服务,可在配置文件中指定是否远程拉包

可选参数:--exist [1|2|3] 1 表示只重启服务不发包(默认可不写),2 表示从跳板机取包发

布,3 表示仅部署远程节点本地的包

可选参数:--pull 表示只从服务器下载包,但不发布

可选参数:--catalina 指定自定义的 catalina 参数

云徙科技-阿里云战略合作伙伴 6 / 15

可选参数:--all 同时发布 beta 和 normal(仅 deploy_module 不等于"shell"时生效)

可选参数:--reload 仅对 nginx 服务有效,只重载配置文件,不重启服务

3.5 stop:停止服务

可选参数:--clearlog 表示停止服务的同时清理应用日志

clearlog:清理应用日志

3.6 stat:查看服务状态

打印应用进程信息,无特殊可选参数

3.7 make 一键打包

合并执行:git->build->package

3.8 go一键发布

合并执行:git->build->package->run

3.9 upgrade同步更新

同步更新远端节点的主程序和配置文件

3.10 config备份/还原配置中心

必选以下两个参数之一:

--backup:备份当前配置中心数据

--restore:从已有的备份中还原配置中心数据

云徙科技-阿里云战略合作伙伴 7 / 15

3.11 其它选项

3.11.1 -m | --modules

为 git、build、package、make、run、upgrade 指令共有,可以指定只对指定的模块执

行相应动作

注:run 指令支持容器类型,如 nodejs/nginx/edas/aliedas

3.11.2 -e | --env

为 build、package、run、make、go 指令共有,可以切换指定的环境,注意如果 build 指

令只支持 4 种标准环境:dev/test/stage/prod,非标准所有环境会用 test 处理

3.11.3 -f | --config

为所有指令共有,可以指定一个 devops 配置文件路径,也可使用 DEVOPS_CONF 变量

3.11.4 -p | --prefix

指定模块前缀

3.11.5 查看帮助

运行 devops 或 devops --help 即可查看全部帮助

联系开发者([email protected]

云徙科技-阿里云战略合作伙伴 8 / 15

4 devops 配置文件详解

4.1 总述

devops 配置文件提供了 devops 正确运行的重要配置信息,总共分为[main]、[project]、

[branch]、[build]、[package]、[packrepo]、[saas]、[apps]等段落,其中:

main 段落描述了 devops 主配置信息,project 和 branch 段落描述了 git 工程信息,build

段落描述了 maven 构建信息,package 段落描述了打包信息,edas 段落描述了本地 edas

中间件信息,nginx 段落描述了 web 工程信息,commit 段落描述了上传打包服务器信息,

fly 段落描述了远程发布信息

4.2 [main]

此段落描述了 devops 公共的配置信息,各参数说明如下:

ARRAY_NAME:项目名称,这个名称决定了拉取代码和打包路径

ENV:指定当前环境,自动维护

jdk_version:指定 jdk 版本号

mvnD:maven 编译参数,自动维护

gitinfo:配置 git 代码仓库,支持多 git 源

4.3 [project]

此段落描述了 git 项目仓库地址路径信息,假定某 git 项目代码如下:

{[http|https|ssh]}://{host}:{port}/{group}/{subgroup}/{project}-{module}.git

并在[main]中配置了:gitinfo="mygitlab:git@host:port"

云徙科技-阿里云战略合作伙伴 9 / 15

配置此项目的 project 配置为:

group>>subgroup@mygitlab="project-module[@gitrepo]:[branch]:[tag]"

其中 gitrepo、branch、tag 可选,但如果指定后面的选项,前面的:冒号不可省略

特别注意:各个 project-module 命名不能形成包含关系,如:yunxi-abc 和 yunxi-abc-

xyz 两个项目就形成了包含关系,项目命名应该避免这样的情况发生

4.4 [branch]

此段落描述了获取源代码时的分支及标签信息:

{group}>>{subgroup}="{分支名称}:[标签名称]"

其中标签名称可选

注意:[branch]中的分支标签配置的优先级低于:命令行指定 devops 分支及标签-t 参数

4.5 [build]

此段落描述了项目编译信息,包括:

maven 工程编译:

package="{git 工程名称} ",只根据 pom 文件编译生成 jar 或 war 包,不安装至本地 maven

仓库,不部署至 maven 中央仓库

install="{git 工程名称} ",根据 pom 文件编译生成 jar 或 war 包,并且安装至本地 maven

仓库,但不部署至 maven 中央仓库

deploy="{git 工程名称} ",根据 pom 文件编译生成 jar 或 war 包,安装至本地 maven 仓

库,同时也部署至 maven 中央仓库

最佳实践:服务类的工程放在 install 或 deploy 中,而合包项目或没有被依赖的项目放在

云徙科技-阿里云战略合作伙伴 10 / 15

package 中

前端工程编译:

react="{git 工程名称 }",支持基于 npm 编译的项目,编译后的文件必须存放在{git 工程

根目录/dist}目录下,后期才能打包成功

4.6 [package]

此段落描述了项目打包信息,包括:

service="{git 工程名称} ",打包服务模块,此配置会将{git 工程根目录}/{git 工程名

称}service/target/{git 工程名称}service.war 包拷贝至:{实际打包目录}/{git 工程名称}.war

war="{git 工程名称} ",打包非服务工程,直接将{git 工程根目录}/target/{git 工程名称}.war

包拷贝至:{实际打包目录}/{git 工程名称}.war

servicebox="{git 工程名称}/{合包名称}",适用于服务模块合包情景,此配置会将{git 工程

根目录}/{合包名称} /target/{合包名称 }.war 包拷贝至:{实际打包目录}/{合包名称}.war

react="{git 工程名称} ",此配置会将{react 项目根目录}/build 下的所有文件打包存放于:

{实际打包目录}/{git 工程名称}.war

4.7 [packrepo]

pushstr="指定打包服务器信息",目前支持 ssh 协议

pullstr="指定拉包服务器信息",支持 ftp、http 协议

4.8 [saas:{env}]

fortress="跳板机信息",支持三种协议:local(本地安装部署)、ssh1.x(远程无跳板部署,

适用于 VPC 堡垒机)、ssh1.1.x(远程有跳板机部署)

云徙科技-阿里云战略合作伙伴 11 / 15

{service}_server="提供某种服务的信息",包括版本、IP 地址、端口,如 ols_server="logio-

0.3.4://192.168.33.12:8578"

{container}_version="指定容器版本",如 nginx_version=" nginx-1.11.2.el7"

JAVA_MEM_OPTS="JVM 内存参数"

JAVA_TOMCAT_OPTS="tomcat 运行时参数"

JAVA_CATALINA_OPTS="指定 catalina 运行时参数"

JAVA_SPRINT_OPTS="指定 springcloud 运行时参数"

JAVA_HOME="指定 JDK 路径"

betanormal=1 生产环境有效,设定当前生产环境支持灰度发布

packend="指定当前环境拉包策略,支持三种策略: local 本地(默认)、pull(使用

packrepo->pullstr 地址拉包)、push(使用 packrepo->pushstr 地址拉包)"

http_protocol="http|https,指定当前环境是否使用 https,默认 http"

backup_policy="指定备份策略:保留的备份个数,默认=7"

deploy_module="指定部署模型,默认为 shell 部署,支持:alipytool:${userid}部署模型,

其中${userid}指 edas 主账号 ID 号"

4.9 [apps:{env}]

此段落描述了所有应用服务信息,格式为:

{应用名称}:{打包类型}={本次是否发布}>>{应用类型}:{服务 IP 地址}:{attr1}:{attr2}:{attr3}

其中:

应用名称=打包名称

打包类型支持 war 和 jar 两种,war 和 zip 通用

云徙科技-阿里云战略合作伙伴 12 / 15

本次是否发布=0,不发布,=1 发布

应用类型

5 devops 功能使用说明

5.1 获取更新源代码

devops git [其它可选参数请参考第 3 章]

此命令会按[project]段落的配置依次 clone 或拉取 git 工程至:

{DEVOPS_HOME}/git/{ARRAY_NAME}

目录下,并切换至指定分支和标签,如果没有指定分支标签,默认为 master 分支的 HEAD

头节点,最后会打印一份没有按预期切换分支标签的结果列表:

**************************************************************

Branch tag not matched list

**************************************************************

如果后面无任何打印信息表示命令执行成功,否则请进入提示中的 git 工程目录,检查分支

或标签不正确的原因

5.2 编译

devops build [其它可选参数请参考第 3 章]

此命令会按[build]段落的配置依次编译 maven 工程和 react 工程,并根据需要安装或部署

至 maven 仓库,react 工程则会调用{DEVOPS_HOME}/apps/中的 nodejs 编译环境,如

果编译时出现任何错误立即停止编译,程序自动退出,方便查找错误信息

云徙科技-阿里云战略合作伙伴 13 / 15

5.3 打包

devops package -v {版本号} [其它可选参数请参考第 3 章]

此命令打包一份全量编译内容至{实际打包目录},并根据版本号自动获取打包服务器上的全

量归档,将两份相同模块名的全量包对比,并将差异内容打包成增量 zip 包,同时回写

devops 配置文件[edas]段落中的[增量打包标志]

注:如果有--push 选项,则将增量或全量包推送至{打包服务器存放文件路径}/{项目

名}_arch{ARCH_LEVEL }/{env}目录下

ARCH_LEVEL=1(默认)表示增量打包,自动对比打包服务器相同版本的全量包,如果

打包服务器上全量包不存在,则此外会全量打包

ARCH_LEVEL=0 表示全量打包,生成下一次增量的基线

5.4 部署启动

devops run [其它可选参数请参考第 3 章]

此命令将打包内容部署至对应的应用容器中,并启动或重启(如果原来已启动)服务,分为

三种部署类型:local、ssh1.x 远程、ssh1.1.x,其中 ssh1.x 和 ssh1.1.x 远程部署会自动备

份,备份策略默认保留 7 个

5.4.1 local本地部署

将打好的包直接拷贝至本地应用容器目录,直接执行本地部署

5.4.2 ssh1.x远程堡垒机部署

将打好的包先远程拷贝至目标节点,再在目标节点执行本地部署

云徙科技-阿里云战略合作伙伴 14 / 15

5.4.3 ssh1.1.x远程跳板机部署

将打好的包先远程拷贝至跳板机,再拷贝至目标节点,再在目标节点执行本地部署

5.5 停止服务

devops stop [其它可选参数请参考第 3 章]

此命令将停止应用服务,实现功能与启动部署类似,但不涉及拷贝应用程序包的操作

注意,由于 edas 中间件调用 shutdown.sh 经常无法正常关闭,因此 devops 目前采取直

接 kill -9 {进程号}的方式

5.6 查看状态

devops stat [其它可选参数请参考第 3 章]

查看各个应用服务的状态,打印进程信息

5.7 清理日志

devops clearlog [其它可选参数请参考第 3 章]

此命令将清理应用日志,包括前后端各应用容器的日志

5.8 备份/还原配置中心

devops config –backup|--restore

注:

备份还原时请先停止配置中心,否则操作将失败;

请在配置中心运行的所在节点操作,不支持远程执行

云徙科技-阿里云战略合作伙伴 15 / 15

5.9 更新

5.9.1 更新操作主节点

devops update

更新 devops 主程序及配置文件

5.9.2 更新远端节点

devops upgrade [其它可选参数请参考第 3 章]

未指定-m 时:只更新 devops 主程序、配置文件

指定-m 时:更新 devops 主程序、配置文件、模块对应软件包