当前位置: 首页 > news >正文

jenkins集成liquibase

一、前言

        liquibase的功能非常强大,只需要按规则编写sql文件,就可以实现自动化的数据库更新,发布的时候就不用依赖人工去操作更新数据库,而且liquibase还具有数据库版本回滚功能,一旦发现新版本有问题,就可以进行回滚到老版本的操作,下面就将liquibase集成到jenkins的cicd中,实现全自动化的发布

二、部署

在github下载liquibase安装包:https://github.com/liquibase/liquibase/releases

在mysql官网下载连接器:https://dev.mysql.com/downloads/connector/j/

我这里分别下载的是liquibase-4.32.0.tar.gz和mysql-connector-j-8.0.33.tar.gz

放到部署jenkins的主机中解压

mkdir /opt/liquibase && cd /opt/liquibase
tar -zxvf liquibase-4.32.0.tar.gz
tar -zxvf mysql-connector-j-8.0.33.tar.gz
ls /opt/liquibase

配置变量

vi /etc/profile
#在末尾添加以下内容
PATH=$PATH:/opt/liquibase/liquibase执行命令生效
source /etc/profile验证是否有效
liquibase --help

编写liquibase配置文件

vi liquibase.properties
#在文件中添加以下内容#连接器类型
driver=com.mysql.cj.jdbc.Driver
#mysql连接器压缩包解压后路径下的可执行jar包路径
classpath=/opt/liquibase/mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar
#数据库用户名
username=xxxx
#数据库密码
password=xxxx

将配置文件上传到jenkins的凭证配置中

Manage Jenkins>Credentials>Global(全局)>Add Credentials

选择secret file类型并上传刚刚编辑的liquibase配置文件

在jenkins pipeline中加入liquibase更新数据库的步骤

pipeline {agent anyenvironment {database_name= "demeter_foundation"prd_mysql_url= "10.1.60.8:6033"test_mysql_url= "10.1.60.5:6033"}stages {stage('change mysql') {parallel {stage('change test mysql') {when {expression {params.status == 'deploy' && env.gitlabBranch != null }}steps {   #使用withCredentials调用凭证中的liquibase配置withCredentials([file(credentialsId: 'liquibase_conf', variable: 'LIQUIBASE_CONF')]) {sh '''   #以下liquibase命令指定了配置文件,数据库连接,还有变更的sql文件路径/opt/liquibase/liquibase --defaultsFile=${LIQUIBASE_CONF} --url=jdbc:mysql://${test_mysql_url}/${database_name} --changeLogFile=db/${database_name}/update/change_mysql.sql update'''}}}stage('change prd mysql') {when {expression {params.status == 'deploy' && env.gitlabBranch == null }}steps {withCredentials([file(credentialsId: 'liquibase_conf', variable: 'LIQUIBASE_CONF')]) {sh '''/opt/liquibase/liquibase --defaultsFile=${LIQUIBASE_CONF} --url=jdbc:mysql://${prd_mysql_url}/${database_name} --changeLogFile=db/${database_name}/update/change_mysql.sql update'''}}}}}}

有一个注意点是使用了proxysql+mysql mgr集群会导致出现报错,报错的原因是找不到主键,需要在liquibase创建的两张表中设置主键即可解决

以上的sql文件包含在代码仓库中由开发提交,只需在执行liquibase命令时使用--changeLogFile指定sql文件路径即可

以上配置没有包含回滚命令,回滚需要开发特殊配置sql文件,并且搭配回滚命令rollback命令

更多命令参考:Rollback Commands

http://www.dtcms.com/a/353298.html

相关文章:

  • web中的过滤器和拦截器
  • LaTeX论文转word插入mathtype公式
  • KRaft vs ZooKeeper为何迁移、差异全览与落地实践
  • open3D学习笔记
  • 微软研究院最新tts模型VIBEVOICE解析
  • 配送算法16 A Deep Reinforcement Learning Approach for the Meal Delivery Problem
  • postgreSql远程连接数据库总是超时断开?
  • c#联合vision master 的基础教程
  • linux安装containerd
  • 如何使用 Xshell 8 连接到一台 CentOS 7 电脑(服务器)
  • MySQL 8 与 PostgreSQL 17 对比分析及迁移指南
  • 学习 Android (十七) 学习 OpenCV (二)
  • 【PHP】数学/数字处理相关函数汇总,持续更新中~
  • 极限RCE之三字节RCE
  • 嵌入式学习日记(35)TCP并发服务器构建
  • 指纹手机应用核心技术解析:从识别到智能交互
  • 搭建域服务器
  • 毕业项目推荐:28-基于yolov8/yolov5/yolo11的电塔危险物品检测识别系统(Python+卷积神经网络)
  • ChatGPT登录不进怎么办?
  • NumPy广播机制:高效数组运算的秘诀
  • 预测模型及超参数:2.传统机器学习:PLS及其改进
  • 守术,明法,悟道
  • 欧盟《人工智能法案》生效一年主要实施进展概览(二)
  • 如何借助文档控件 TX Text Control 轻松优化 PDF 文件大小?
  • 中科大携手智源发布 BGE-Reasoner:引领推理式信息检索新高度
  • AI数据治理:战略选择与伦理平衡
  • C6.4:晶体管模型
  • 语言切换时广播没有监听到语言变化
  • 从传统到创新:用报表插件重塑数据分析平台
  • OpenTelemetry 在 Spring Boot 项目中的3种集成方式