前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >活动投稿 | SQLE+GitLab-Runner 快速实现 SQL 自动审核

活动投稿 | SQLE+GitLab-Runner 快速实现 SQL 自动审核

作者头像
爱可生开源社区
发布2024-01-29 14:12:00
1950
发布2024-01-29 14:12:00
举报

1介绍

随着 DevOps 概念的普及,越来越多的事情都在往自动化方向发展。目前 DevOps 可以使用的各类工具非常丰富,包括打包工具 Maven[1],代码扫描工具 Sonar[2],部署工具 Docker 等。本文将介绍一个新的可以集成到 DevOps 工具链中的应用 SQLE,这个工具弥补了 DevOps 中对 SQL 的合规性审核功能。

1.1 基础环境介绍

工具类型

工具名称

操作系统

CentOS

代码仓库

GitLab

DevOps 工具

GitLab-Runner

SQL 审核工具

SQLE

1.2 预期效果

在代码提交时自动触发 SQL 的审核任务,并将扫描结果上传。

2安装配置

2.1 各工具安装方式

本次主要目的不在各种环境的安装,建议参考以下各官方文档进行安装。

  • GitLab:https://gitlab.cn/install/
  • GitLab-Runner:https://docs.gitlab.com/runner/install/
  • SQLE:https://actiontech.github.io/sqle-docs/docs/quick-usage

2.2 SQLE 中创建扫描任务

创建完成后我们可以看到这个任务,复制一下里面的访问凭证,后续需要使用这个访问凭证配置我们的 CI/CD,之后我们的扫描结果将会可以在这个任务中查看。

2.3 自动化配置

2.3.1 配置文件

首先需要在项目中,创建一个 .gitliab-ci 文件。这个文件是 Git 触发 GitLab-Runner 的入口,所有流水线任务均在此文件配置。

代码语言:javascript
复制
stages: 
  - sqle

# SQLE 执行扫描
master-deploy:
  image: ubuntu:20.04-ssh
  stage: sqle
  before_script:
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY"
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
  script:
    - scp -r ../rbac centos@IP:/opt/code/
    - ssh centos@IP "cd /opt/code/ && scannerd mybatis -D /opt/code/rbac/src/main/resources/ -N auto --token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJhdXRvIiwiZXhwIjoxNzI5ODQxODg3LCJpc3MiOiJhY3Rpb250ZWNoIGRtcyIsInVpZCI6IjcwMDIwMCJ9.XBVBlVPGFDp-Isu39pBKgVDpYkr_PKJ-KavbnIB55yI -P 10001"
  only:
    - master
  tags:
    - gitlab-runner

注意:替换 IP

2.3.2 配置简要说明

通过一个 ubuntu:20.04-ssh 容器,将代码上传到我们 SQLE 所在服务器,并执行 SQLE 扫描。

scannerd 是 SQLE 自带的扫描客户端,使用方法如下,其中的 Token 就是上一步中的访问凭证。

代码语言:javascript
复制
[root@sqle-server bin]# ./scannerd mybatis --help
Parse MyBatis XML file

Usage:
  SQLE mybatis [flags]

Flags:
  -D, --dir string         xml directory
  -h, --help               help for mybatis
  -S, --skip-error-query   skip the statement that the scanner failed to parse from within the xml file

Global Flags:
  -H, --host string    sqle host (default "127.0.0.1")
  -N, --name string    audit plan name
  -P, --port string    sqle port (default "10000")
  -A, --token string   sqle token
  • only:表示 GitLab 中的分支
  • tag:表示 GitLab-Runner 的 tag

2.3.3 CI/CD 环境变量配置

CI/CD 执行过程中需要使用 scp 以及 ssh 传输文件调用扫描命令,我们需要给服务器配置证书登录。配置证书登录方式自行查找,这里就说一下在哪里添加变量。

2.3.2 完成

完成以上操作后,就可以在每次提交代码之后,看到对应的 SQL 扫描记录。可以根据扫描情况,确定是否通过审核,是否可以上线。

3总结

SQLE 的出现为 DevOps 工具链又出了一个很好的工具,避免了一些 SQL 上的性能问题,可以提前识别风险,改善风险,降低上线问题出现的概率。

希望 SQLE 以后越来越好!

参考资料

[1]

Maven: https://maven.apache.org/

[2]

Sonar: https://www.sonarqube.org/

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-25,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 爱可生开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1介绍
    • 1.1 基础环境介绍
      • 1.2 预期效果
      • 2安装配置
        • 2.1 各工具安装方式
          • 2.2 SQLE 中创建扫描任务
            • 2.3 自动化配置
              • 2.3.1 配置文件
              • 2.3.2 配置简要说明
              • 2.3.3 CI/CD 环境变量配置
              • 2.3.2 完成
              • 参考资料
          • 3总结
          相关产品与服务
          CODING DevOps
          CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com