ninedata check,审核本次变更中的 SQL 文件和 MyBatis XML 文件,并将结果输出到代码平台。.sql 文件;UPDATE、
DELETE 缺少约束条件;ninedata check。ninedata check 解析 SQL,并调用 NineData 审核能力。.sql 文件;ninedata-review.yml,并由
.gitlab-ci.yml 引用:include: - local: ninedata-review.yml
ninedata-review.yml 中新增 SQL 审核 Job:sql-review: stage: test image: name: ninedata/ninedata-cicd:amd pull_policy: always variables: CREATOR: $GITLAB_USER_LOGIN NINEDATA_URL: $NINEDATA_URL CUR_BRANCH: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME TARGET_BRANCH: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME ACCESS_KEY: $NINEDATA_ACCESS_KEY ACCESS_SECRET: $NINEDATA_ACCESS_SECRET DATASOURCE_ID: $NINEDATA_DATASOURCE_ID DATABASE_NAME: $NINEDATA_DATABASE EVENT_SOURCE: $CI_PIPELINE_SOURCE script: - | ninedata check \ --url="$NINEDATA_URL" \ --creator="$CREATOR" \ --cur-branch="$CUR_BRANCH" \ --trg-branch="$TARGET_BRANCH" \ --access-key="$ACCESS_KEY" \ --access-secret="$ACCESS_SECRET" \ --file-patterns="migration/*.sql" \ --file-patterns="src/main/resources/config/mybatis/**/*.xml" \ --datasource="$DATASOURCE_ID" \ --db="$DATABASE_NAME" \ --event="$EVENT_SOURCE" artifacts: reports: codequality: ninedata_review_result.json rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" - changes: - "migration/*.sql" - "src/main/resources/config/mybatis/**/*.xml"
NINEDATA_URL、AccessKey、AccessSecret、数据源 ID 和数据库名称应配置为 GitLab CI/CD Variables,不应明文写入代码仓库。container 指定 NineData GitOps CI 镜像。pathFilter 限定触发范围,例如
src/main/resources/config/mybatis/**/*.xml。ninedata check。sources: repo_0: type: codeup name: <Codeup仓库名称> endpoint: <Codeup仓库地址> branch: dev triggerEvents: - mergeRequestOpenedOrUpdate pathFilter: src/main/resources/config/mybatis/**/*.xml defaultWorkspace: repo_0 stages: stage_0: name: SQL 审核 jobs: job_0: name: Ninedata_CI runsOn: group: public/cn-hangzhou labels: linux,amd64 container: ninedata/ninedata-cicd:amd steps: step_0: name: 执行 SQL 审核 step: Command with: run: |- ninedata check \ --url="$NINEDATA_URL" \ --creator="$BUILD_EXECUTOR" \ --cur-branch="$CI_COMMIT_REF_NAME" \ --trg-branch="$CI_COMMIT_TARGET_REF_NAME" \ --access-key="$NINEDATA_ACCESS_KEY" \ --access-secret="$NINEDATA_ACCESS_SECRET" \ --file-patterns="src/main/resources/config/mybatis/**/*.xml" \ --file-patterns="migration/*.sql" \ --datasource="$NINEDATA_DATASOURCE_ID" \ --db="$NINEDATA_DATABASE" \ --event="merge-request-event"
| 审核结果 | 推荐处理方式 |
| 审核通过 | 正常进入构建、测试和发布流程 |
| 规范提醒或低风险优化建议 | 在 Merge Request 中展示,由开发人员评估处理 |
| 高风险 SQL 或严重性能问题 | 在 CI 中配置失败条件,修复后重新提交 |
| 审核调用失败 | 暂停后续发布或转人工确认;依次检查 NineData 服务地址、网络连通性、凭证有效性与权限、目标数据源 ID、数据库名称及 SQL 开发规范配置 |
ninedata check。ninedata check,将 SQL 文件和 MyBatis XML 中的数据库变更接入 GitLab、Codeup 等 CI/CD 流水线。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70049603/viewspace-3180203/ ,如需转载,请注明出处,否则将追究法律责任。