Closed winfredLIN closed 2 days ago
https://github.com/actiontech/sqle/pull/2574 目前CICD集成还有一些需要优化的点:
在package cmd中,引用scannerd/command,对cmd进行初始化,对变量和标志名称关联 若在cmd中初始化时调用了一个未在scannerd/command定义的标志,能够在初始化阶段引发panic,能够在dev阶段发现问题 定义了生成command的方法,会检查:必须的flag是否存在,值是否为空。传入的标志位是否存在,类型是否正确。
解除 scannerd/cmd 到 auditplan/meta 的直接依赖,为二者添加依赖scannerd/command。避免了循环依赖和传递循环依赖
auditplan和pipeline生成command方法都使用了scannerd/command中的command生成方法,能够在scannerd的定义发生变化时,保持一致性。
优化了生成scanner命令的用户使用体验,对于必要参数,会使用引导词引导用户填写
当删除数据源时,会检查流水线节点是否有关联该数据源,若关联则无法删除
优化了流水线节点的表,用instance id 替代instance name
在删除流水线的时候,使用project id进行筛选
涉及模块:智能扫描、流水线 版本兼容性:未改变scannerd的命令,兼容 涉及模块:删除数据源 版本兼容性:新增逻辑,兼容旧版本数据源 涉及模块:流水线表 版本兼容性:不兼容旧版本数据,需要升级方案
由于表pipeline_nodes的变更,需要做以下更新操作
# 这条语句的作用是在 sqle.pipeline_nodes 表中添加一个名为 instance_id 的新列 ALTER TABLE sqle.pipeline_nodes ADD COLUMN instance_id BIGINT(20) NULL DEFAULT NULL; # 这条语句的作用是更新 pipeline_nodes 表中的 instance_id 列。它首先创建了一个子查询,从 pipeline_nodes 表中选择所有 instance_name 不为空的记录。然后,它将这些记录与 dms.db_services 表进行连接,连接条件是 dms.db_services 表中的 name 字段等于子查询中的 instance_name。最后,它将 pipeline_nodes 表中的 instance_id 字段更新为 dms.db_services 表中的 uid 值。 UPDATE pipeline_nodes pn JOIN ( SELECT id, instance_name FROM pipeline_nodes WHERE instance_name != "" ) AS subquery ON pn.id = subquery.id JOIN dms.db_services dbs ON dbs.name = subquery.instance_name SET pn.instance_id = dbs.uid; # 这条语句的作用是在 sqle.pipeline_nodes 表中删除一个名为 instance_name 的新列 ALTER TABLE sqle.pipeline_nodes DROP COLUMN instance_name;
需求描述(Describe)
https://github.com/actiontech/sqle/pull/2574 目前CICD集成还有一些需要优化的点:
实现方案
command生成可以和智能扫描中的command生成功能放在一起管理
解除 scannerd/cmd 到 auditplan/meta 的直接依赖,为二者添加依赖scannerd/command。避免了循环依赖和传递循环依赖
auditplan和pipeline生成command方法都使用了scannerd/command中的command生成方法,能够在scannerd的定义发生变化时,保持一致性。
优化了生成scanner命令的用户使用体验,对于必要参数,会使用引导词引导用户填写
流水线相关业务逻辑优化
当删除数据源时,会检查流水线节点是否有关联该数据源,若关联则无法删除
优化了流水线节点的表,用instance id 替代instance name
在删除流水线的时候,使用project id进行筛选
变更影响面
command生成可以和智能扫描中的command生成功能放在一起管理
涉及模块:智能扫描、流水线 版本兼容性:未改变scannerd的命令,兼容 涉及模块:删除数据源 版本兼容性:新增逻辑,兼容旧版本数据源 涉及模块:流水线表 版本兼容性:不兼容旧版本数据,需要升级方案
升级方案
由于表pipeline_nodes的变更,需要做以下更新操作
受影响的模块或功能
外部引用的潜在问题或风险
版本兼容性
测试建议