Bytebase SQL审核|将结果与代码提交进行关联

文章介绍了如何使用BytebaseCloud进行GitOps方式的SQL审核,包括注册、配置数据库GitOps、集成GitLab、创建测试项目以及开启SQL审核工作流。作者提到,虽然整体体验良好,但可能需要更多自定义审核规则和与其他CI工具如Jenkins的集成。
摘要由CSDN通过智能技术生成

整体的体验还是很赞的,GitOps方式的SQL审核体验很不错。将SQL审核结果与提交或者合并请求关联:可以开启GitOps通过GitLabCI/CD或者GitHub action进行SQL审核。我的体验过程分享给大家!

注册Bytebase Cloud

访问https://www.bytebase.com/,然后单击右上角的“注册云服务” 。
bf61a65deb0be3818c5cecc5e2b38cde.png
可以通过电子邮件/Google/GitHub/Microsoft 帐户注册或登录 Bytebase Hub。此处使用Github登入。
b93fb16b2b6ea139c3569cb649e5d00a.png
登入后,将被重定向到工作区页面,单击创建工作区。请注意,每个帐户只允许一个工作区。
53fea66340925ed28dcb22b95510c6fd.png
等待几分钟以配置工作区,然后检查您的电子邮件以获取登录链接、电子邮件和密码。
b1a2c5f00f0df948632ccf9490d60745.png


配置数据库GitOps

导航到“设置” 单击左侧菜单GitOps进入配置。此处选择GitLab进行演示。填写GitLab服务地址,单击下一步
b11408aef23d6dcf0dcec01b30f945fa.png

进入GitLab平台创建一个OAuth认证APP, 如图所示。
2998ee77a713b249a3de7b1c9797c060.png
创建应用后,复制应用ID和Secret填写到项目集成中。
8ce2180f9cf52799de1b3212ff0b6a37.png

集成完成,单击确认并添加完成GitOps配置。
0ad39f8275eb88f107b098a9fb19cf5a.png
创建测试项目, 开启GitOps工作流。如图所示。
7a14ba88cbeaf95083dadd8563969136.png
选择集成的GitLab Project, 如图所示。
fe200b236058e5a0b9310a0b557e635c.png

测试GitOps

选择Cloud中以存在的测试数据库。如图所示。选择环境、填写数据库名称。单击创建。
f2181bb7e75ac6936b9a0a2925312d3a.png

配置SQL审核策略:选择环境开启审核策略。
6156ed94a9c93821a3ff654f74e08471.png

7ca3f222d38d5ca2430ec3a63292e9b8.png

在远程仓库中新建SQL变更文件。(注意文件名称以.sql为后缀)
d0a916bec595bde570763e450293e909.png
代码提交会Bytebase自动生成工单。单击工单可以看到当Schema 或者数据变更时会自动进行SQL审核。如图所示。
07f68f26ba87da038c3b41f54e88d41c.png
单击SQL审核可以看到检查结果。
67f201efcf97bfcda242751826730c94.png

如果语法错误或者审核错误,如图所示。
4b3656b8619aee3da3b2ddd9a7809718.png
进行Query查询也会对查询的SQL进行审核。如果未出现SQL检查结果可能是因为当前环境未开启SQL审核策略。
a7512ba4dab53134a62ababf601c9efc.png

GitOps SQL审核

基于GitLab CI 开启SQL审核
196f34734ffe5f51ad0f63b5b09c2ca1.png
Bytebase 会初始化发起合并请求为您的代码仓库配置 SQL 审核 CI。
b67eec6fa9d6e541c4d01679c13cab5f.png
499c2bd137adae8100e4b834aabb07d2.png
初始化的过程会添加gitlab-ci.yaml配置文件。也就是当后续创建合并请求时会调用api对仓库中的SQL文件进行审核。

bytebase-sql-review:
  only:
    refs:
      - merge_requests
  image: docker:stable
  variables:
    API: "https://ovxlixlc.us-central1.bytebase.com/hook/sql-review/workspace_zytest-ujognaj-1682219285" # This is the API for SQL reivew.
  before_script:
    - apk update && apk add curl
    - apk update && apk add jq
  script:
    - echo "Start request $API"
    - request_body=$(jq -n --arg repositoryId "$CI_PROJECT_ID" --arg pullRequestId $CI_MERGE_REQUEST_IID --arg webURL "$CI_SERVER_URL" '$ARGS.named')
    - 'response=$(curl -s --show-error -X POST "$API" -H "Content-type: application/json" -H "X-SQL-Review-Token: $SQL_REVIEW_API_SECRET" -d "$request_body")'
    - echo $response
    - content=$(echo $response | jq -r '.content')
    - len=$(echo $content | jq '. | length')
    - if [ $len == 0 ]; then exit 0; fi
    - msg=$(echo $content | jq -r '.[0]')
    - echo $msg >> bytebase-sql-review.xml
    - status=$(echo $response | jq -r '.status')
    - if [ "$status" == "ERROR" ]; then exit 1; fi
  artifacts:
    when: always
    reports:
      junit:
        - bytebase-sql-review.xml

创建测试分支,并修改sql文件提交后。开启MR,可以看到SQL代码的测试结果。如图所示。
6e29990de10b89d54bf28af39448290f.png

Q1: 配置 SQL 审核是否顺手? 

web页面配置过程比较顺手。GitLabCI集成需要考虑到当前项目已经存在CI文件的场景,避免合并冲突。

Q2: 是否满足你的使用场景? 

目前看到的是以环境级别配置的SQL审核, 我理解当PROD开启SQL审核后所有的项目都会启用这套规则。企业中场景更为复杂,可能有自定义和自选审核规则的场景。

Q3: 你觉得 SQL 审核还缺少点啥?

1.目前一部分企业也在用SonarQube来做SQL扫描。https://rules.sonarsource.com/plsql   SonarQube的SQL扫描规则。可以补充审核规则。

2.大部分企业还在用Jenkins来做CI/CD 可以考虑添加这部分集成。

总结:整体的体验还是很赞的,GitOps方式的SQL审核体验很不错。

往期推荐

f83cce67def5f10c16bdf98fa9a9dd6c.jpeg

数据库即代码| 使用Bytebase的数据库GitOps实践

f79698bd3ab62d23230de0a192745eef.jpeg

初体验| 使用Bytebase进行数据库CI/CD变更

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值