# 主机升级指南
# 目标
为使用普元 DevOps_6.6GA 产品且需要升级到 DevOps_6.7GA 的用户提供参考。
# 范围
仅限使用普元 DevOps_6.6GA 版本且没有进行过二次开发的平台升级至 DevOps_6.7GA 版本。
# 升级介质说明
# 应用版本
应用软件/中间件 | 升级项 | 版本变更 | 说明 |
---|---|---|---|
DevOps | 版本,数据 | 6.6GA-6.7GA | 前后端应用升级到6.7GA版本,数据库sql升级 |
# 升级包
DevOps平台提供了升级介质:DevOps_6.6-6.7GA_Update.tar.gz。
目录结构如下:
devops/
├── devops_update6.6-6.7GA.sql
├── devops-server-6.7.0.0.tar.gz
└── devops-portal-6.7.0.0.zip
# 升级方案
DevOps
- 更新DevOps前端,使用前后端分离部署时需更新。(devops-portal-6.7.0.0.zip)
- 更新DevOps后端。(devops-server-6.7.0.0.tar.gz)
- 更新DevOps数据库。(devops_update6.6-6.7GA.sql)
# 数据更新
# 备份
# 备份整个devops数据库
mysqldump -udevopsadmin -p'Primeton,111' devops > devops-bk.sql
# 升级
登录数据库
mysql -udevopsadmin -p'Primeton,111'
切换到devops数据库
use devops;
执行升级sql
source /opt/devops/devops_update6.6-6.7GA.sql;
# 应用更新
# 6.6版本应用备份
停止应用
# 切换到进程对应的用户 su - userapp cd /opt/idc/apps/tomcat # 执行停止脚本 ./stopServer.sh
备份目录
cd /opt/idc/apps/ mv tomcat tomcat.bk
# 6.7版本应用备份
这里补充个6.7版本的应用备份(升级备份按上方6.6操作)
停止应用
# 切换到进程对应的用户 su - userapp cd 安装路径/devops/bin # 执行停止脚本 ./shutdown.sh
备份目录
cd 安装路径 mv devops devops.bk
# 升级
部署tar.gz包
su - userapp cd 安装路径 mkdir devops tar -zxf devops-server-6.7.0.0.tar.gz -C devops cd devops
修改数据库连接配置
编辑文件
config/DEVOPS/config/user-config.xml
:
<configValue key="C3p0-Url">jdbc:mysql://ip:3306/devops?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai</configValue>
<configValue key="C3p0-UserName">user</configValue>
<configValue key="C3p0-Password">password</configValue>
- license文件更新
6.6的license.xml不兼容6.7的primetonlicense.xml 需要申请新的license
cd config/DEVOPS/license
# 替换primetonlicense.xml文件
- 重启应用
cd bin
# 启动 DevOps 服务
sh startup.sh
# 不兼容说明
1、章节【需要更新的部分 (重要!)】涉及配置变更和sql执行,在本文最下方,请平台维护人员详细阅读。
2、开发人员如果需要二次开发可以阅读【DevOps底层架构升级】部分。
3、用户使用方面变更请查看【服务使用差异变更】部分。
# DevOps底层架构升级
该部分是关于DevOps架构变动相关说明。
开发工具推荐使用配套EOS Studio开发工具开发。
# 项目结构变更
DevOps底层架构由EOS7.6升级为EOS8.2,项目结构有相应调整,
- 移除了devops-dailybuild、devops-bootstrap、devops-install模块,改为了boot模块。
- 运行入口通过执行boot模块内Application启动类启动。
- 系统配置相关文件均在boot模块src\META-INF下。
- 去除了swagger-maven-plugin模块,devops6.7没有单独的swagger模块了,swagger集成在EOS架构中,直接使用即可。
- 移除了devops-specs模块,在devops6.7中分成了common、api和model三个模块。
- 原specs模块下的special子模块去除,原先是用于存放重写的EOS相关类,更新架构后去除。
# Rest架构改造
- DevOps请求框架由RestEasy改为了Spring Restful。
- 对应所有controller控制层需要改造,改造说明详见【FAQ》RESTEasy更新为Spring RESTful说明】
# License说明
- 改造后License需要重新申请。
# 日志改造
- DevOps日志系统由log4j框架调整为slf4j框架。
- 日志过滤存贮相关配置文件由原来specs模块的config目录下log4j-xx.xml改为了boot模块内的logback-spirng.xml中。
# 数据库连接改造
- DevOps的mysql连接默认驱动由5.x升级到了8.x。
- 对应user-config.xml里的驱动配置得更新为com.mysql.cj.jdbc.Driver。
- 由于devops启动脚本中jvm启动参数默认配置了时区 -Duser.timezone=Asia/Shanghai 为了数据库存储数据一致,需要在user-config.xml中配置相同的时区 &serverTimezone=Asia/Shanghai。
# 构建发布改造
- 现在的devops是一个标准的springMVC项目,通过对pom.xml的mavne构建打包,会在boot模块target目录下形成对应介质。
虽然包含了一个可执行的fatjar包,为了方便修改配置文件,应用中的配置等文件并不在fatjar中,具体的目录主要关注结构如下:
devops devops tar.gz 解压后应用目录
├── bin
│ ├── startup.sh devops应用启动脚本 linux
│ ├── startup.cmd devops应用启动脚本 windows
│ ├── shutdown.sh devops应用停止脚本 linux
│ └── shutdown.cmd devops应用停止脚本 windows
├── config devops配置文件目录
│ ├── devops/config devops应用配置文件目录
│ │ └── user-config.xml devops的用户配置文件(jdbc链接等)
│ └── application.properties 配置应用端口等参数
├── db-scripts devops平台初始化脚本目录 devops全量安装仅关注devops目录下对应数据库类型all.sql即可
├── lib 存放数据库驱动包以及三方jar包
└── {fatjar}.jar devops应用打包后的fatjar包
- 关于开发,三方扩展开发,构建打包发布的说明细节,详见【开发指南】。
# CriteriaConverter变更
由于CriteriaConverter标准转换器规则更新,需要注意以下变更。
# 等于空字符串 使用 ='' 不再生效
改为使用 empty 反之为 notempty
例:
原代码:
criteria.set("_expr[1]/parentGroupId", "");
criteria.set("_expr[1]/_op", "=");
新代码:
criteria.set("_expr[1]/parentGroupId", "");
criteria.set("_expr[1]/_op", "empty");
# 等于空字符串 使用 ='' 配合 is null的判空
改为使用 blank 反之为 notblank
例:
原代码:
criteria.set("_or[1]/_expr[1]/parentGroupId", "");
criteria.set("_or[1]/_expr[1]/_op", "null");
criteria.set("_or[1]/_expr[2]/parentGroupId", "");
criteria.set("_or[1]/_expr[2]/_op", "=");
新代码:
criteria.set("_expr[1]/parentGroupId", "");
criteria.set("_expr[1]/_op", "blank");
# 服务使用差异变更
该部分记录了对比6.6版本服务的使用差异说明
# 平台管理下模板管理菜单内容重构
平台管理下模板管理下的菜单页调整
原【模板管理】菜单页下的【集成面板模板】和【仪表盘模板】更名为【集成面板】和【仪表盘】纳入到【平台配置】菜单页下。
原【模板管理】菜单页更名为【项目配置】,保留【工作项模板】、【用户参数模板】、【角色模板】、【菜单模板】和【项目模板】菜单。
新增【流水线管理】菜单页,原【模板管理】内的【流水线模板】和【组件参数模板】纳入【流水线管理】中,并新增了【脚本管理】和【原子任务管理】页。
本次改动不影响原有的权限配置,仅影响菜单页展示和对应权限分配的位置。
# 脚本执行原子任务更新
脚本执行原子任务新增了【脚本来源】属性,可以选择【自定义】,【脚本Url】和【脚本模版】。
后端兼容了以前的原子任务,没选过【脚本来源】的会平铺所有的属性,填写了脚本url的会识别为【脚本Url】的脚本来源;没填写脚本url的会识别为【自定义】脚本来源。
更新后推荐填写属性时补充【脚本来源】,使得操作逻辑更清晰。
# 故事类型的工作项状态默认流程调整
故事类型的工作项状态默认流程的 已发布状态类型由closedStatus(关闭状态)更新为verifiedStatus(验证通过状态)
# 测试计划新增参与人属性
开始测试计划后,可见测试用例从以前的所有用例改为了仅当前用户为责任人的测试用例。
测试计划中包含的测试用例执行人默认是用例库用例对应的责任人。
测试计划在新建和编辑的时候可以更新参与人。
参与人范围为项目成员范围。
参与人支持多选。
测试计划的用例执行人默认是用例库中用例对应的责任人。
测试计划的用例执行人支持更改,更改范围为测试计划的参与人范围。
测试计划开始计划后,可见的用例为当前用户为执行人的用例范围。
新增了进度table页,可以查看当前测试计划参与人的测试进度。
# 需要更新的部分 (重要!)
该部分涉及需要用户变更的内容,请着重阅读。
# 测试计划新增参与人属性Sql执行
注意!6.7版本前的测试计划的用例数据如果没主动更新执行人,那么执行人虽然现实的是用例对应的责任人,但是数据库中数据的执行人是空的,执行测试计划并不能查看到。
可以通过如下sql更新上述执行人为空的数据,如果用例库里的用例责任人为空,那么执行人就是空的,请自行指定。
UPDATE DPS_TEST_PLAN_ITEM AS TPI
JOIN (
SELECT
TPI_INNER.PLAN_ITEM_ID,
TCC.DEFAULT_ASSIGNEE
FROM
DPS_TEST_PLAN_ITEM AS TPI_INNER
JOIN
DPS_TEST_CASE AS TCC
ON
TPI_INNER.CASE_ID = TCC.CASE_ID
WHERE
(TPI_INNER.ASSIGNEE IS NULL OR TPI_INNER.ASSIGNEE = '')
) AS UPDATE_DATA
ON
TPI.PLAN_ITEM_ID = UPDATE_DATA.PLAN_ITEM_ID
SET
TPI.ASSIGNEE = UPDATE_DATA.DEFAULT_ASSIGNEE;
# 本地文件存储位置变更 (日志、流水线实例详情和附件)
架构升级后,日志、流水线实例详情和附件的默认存储位置变更了!需要重新检查与配置!
1、日志位置配置
6.7版本日志默认存放在安装包的logs目录内,该位置会随着系统更新覆盖掉!
可以通过修改startup.sh脚本里的log_dir来选定日志存放位置
logback_spring.xml里是具体日志文件配置
2、Engine.PipelineInstanceDetails 流水线实例详情
Engine.PipelineInstanceDetailsPersistenceMode
Engine.PipelineInstanceDetailsPersistenceMode 流水线实例详情持久化方式:local,db,nexus
默认值为:local 需要注意!local模式时 如果没有配置【Engine.PipelineInstanceDetailsDir】时 默认在安装包内的config/DEVOPS/work_temp下,更新系统时会导致该目录被覆盖,文件丢失!
所以配置local模式时一定要设置【Engine.PipelineInstanceDetailsDir】为安装目录外的位置!
Engine.PipelineInstanceDetailsDir 流水线实例详情存放目录
3、Pm.Attachment 附件存储规则
Pm.AttachmentPersistenceMode
Pm.AttachmentPersistenceMode 附件存储持久化方式:local,db,nexus,比如:db:worktiem:nexus;
默认值为:local 需要注意!local模式时 如果没有配置【Pm.AttachmentDir】时 默认在安装包内的config/DEVOPS/work_temp下,更新系统时会导致该目录被覆盖,文件丢失!
所以配置local模式时一定要设置【Pm.AttachmentDir】为安装目录外的位置!
Pm.AttachmentDir 附件存储持久化存放目录