自动生成sql语句的插件_Jenkins与Soar集成实现SQL语句自动优化与重写

d5dd8849f81466cb0938c85f26b56832.png
0aeb88b6bac2dd1665d916c40e3e8bfc.png

现状分析

  • 公司在用的持续集成服务器是Jenkins
  • 已设计完成持续交付流水线
  • 需要添加对SQL语句的扫描

工具分析

  • SonarQube 具有SQL插件但是收费~
  • SOAR 开源免费 使用简便

流水线设计

  • 开发人员将SQL文件保存在项目代码中/或单独的仓库中
  • Jenkins下载项目代码库或数据库脚本仓库中的文件
  • 集成SOAR进行此版本SQL语句分析生成HTML报告
  • 获取HTML报告在Jenkins首页展示
  • 想数据库管理员发布SQL扫描报告

flyway SQL脚本

db    migrate        v1.1.1-migrate.sql        v1.1.2-migrate.sql    rollback        v1.1.1-rollback.sql    

jenkins 项目

  • 输入版本分支/版本号
  • 检出代码
  • 运行分析
  • 展示html
  • 发送邮件

Jenkins需要安装插件 HTML Publisher

String branchName = "${env.branchName}"pipeline {   agent { node {label "master"}}   stages {      stage('Hello') {         steps {            echo 'Hello World'         }      }                        stage("CreateSQLFile"){      steps{      script{      sh " echo 'select * from users;' > v${branchName}-migrate.sql  && ls -l && cat v${branchName}-migrate.sql "      }      }      }      stage("SoarSQL"){      steps{      script{      sh """          soar -report-type html -query  v${branchName}-migrate.sql   > testsql.html                    cat testsql.html                    """                publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false, reportDir: '', reportFiles: 'testsql.html', reportName: 'SQLreport', reportTitles: ''])                      Email("SQL审核完成 审核报告","2560350642@qq.com")      }      }      }   }}//定义邮件内容def Email(status,emailUser){    emailext body: """                                                   
构建信息 项目名称:${JOB_NAME} 构建编号:${BUILD_ID} 构建信息: ${status} 项目地址:${BUILD_URL} 构建日志:${BUILD_URL}console """, subject: "Jenkins-${JOB_NAME}项目构建信息 ", to: emailUser }

实现效果

1bd1bf5cfe3a1496711a71d16f37ec99.png
2be122b4247b7db8722b7336bcdf049d.png

剩下的交给DBA大佬了~

ecc7c649183a3d36c31fef6bba0273bd.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值