Jenkins流水线使用mysql数据库

发表于:2020-2-28 10:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:kuaiyaoguonianle    来源:掘金

分享:
  背景
  在某些情况下, 我们可能需要通过jenkins连接数据库做一些数据的持久化操作
  环境准备
  mysql数据库
  以往安装mysql数据库都是在网上先找的安装教程,捣鼓半天才能安装上。后来发现通过docker安装mysql好简单,所以本次通过docker来安装mysql。
  安装
  1、安装docker
   sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
  sudo yum-config-manager --enable docker-ce-test
  sudo yum-config-manager --disable docker-ce-edge
  sudo yum makecache fast
  sudo yum install docker-ce-18.09.9
  #开机启动docker
  sudo systemctl enable docker
  #启动docker
  sudo systemctl start docker
  #创建docker组
  sudo groupadd docker
  #将当前用户加入docker组
  sudo usermod -aG docker $USER
  #如果安装失败了,想卸载重装, 可通过下面命令来卸载
  yum remove docker-ce
  2、安装docker compose
  虽然通过Dockerfile就可以定义一个docker容器, 但是如果我们有多个容器需要配合使用时就不是很方便了,因此此处采用了docker compose。 docker compose 是一个像Dockerfile定义 docker 容器一样能够定义容器集群的编排和部署工具,可以很方便地帮助我们实现容器管理。
  docker compse的安装:
   # 安装 ---二进制包。   如果curl下载不了, 则去此地址手动下载:https://github.com/docker/compose/releases
  curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  # 给下载的docker compose授予可执行权限
  sudo chmod +x /usr/local/bin/docker-compose
  #链接到usr/bin下,然后就可以通过docker-compsoe命令调用了
  sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  3、准备配置了myslq容器的docker-compose.yml 配置文件
   version : '3.7'
  services:
  mysql:
  container_name: mydb
  image: docker.io/mysql:5.7
  command:
  --character-set-server=utf8mb4
  --collation-server=utf8mb4_general_ci
  --explicit_defaults_for_timestamp=true
  --lower_case_table_names=1
  --max_allowed_packet=128M
  --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
  ports:
  - "3306:3306"
  volumes:
  - ./data:/var/lib/mysql
  environment:
  MYSQL_DATABASE: devops
  MYSQL_ROOT_PASSWORD: root
  MYSQL_ROOT_HOST: '%'
  restart: always
  4、启动mysql容器
  在有docker-compose.yml文件的路径下执行下面命令即可启动容器。
  ps:  示例中将使用的docker-compose.yml 文件放在了 /home/docker/devops/compose下。可自行修改
   cd /home/docker/devops/compose
  #检查yml文件是否配置正确,  如果docker-compose.yml有错误,则下面命令会报错
  docker-compose config
  # 后台方式启动容器
  docker-compose up -d
  #查看运行中的容器
  docker ps
  #进入运行中的容器 进入容器后,即可通过 myslq -u root  -p的方式登陆myslq数据库了
  # mysql的root密码在docker-compose.yml里面的MYSQL_ROOT_PASSWORD项已经配置了
  docker exec -ti  mydb  sh
  使用
  由于我们已经在docker-compse.yml里面暴露了3306端口,因此就可以通过  宿主机ip+端口方式访问mysql。 如: jdbc:mysql://ip:3306/数据库名称
  jenkins方面
  虽然jenkins流水线脚本通过groovy编写而且groovy可以使用数据库, 但是如果直接在流水线脚本中通过groovy使用数据库时会面临数据库jdbc驱动加载不到的问题。 经过搜索,发现jenkins已经有了支持数据库的插件: database和MySQL Database Plugin
  安装
  在jenkins插件管理页面安装database和MySQL Database Plugin
  在jenkins系统设置界面配置数据库连接
  使用
  插件安装好以后就可以通过getDatabaseConnection  和  sql 这两个方法来连接数据库进行操作了.
  将sql语句和参数分开是为了避免sql注入,如果不介意这个, 那么就直接把参数写到sql语句里面去吧
   getDatabaseConnection(type: 'GLOBAL') {
  def sqlString="select id from test_table where  job_name= ? and build_number= ?"
  def params=['test',11]
  sql sql:sqlString,parameters:params
  }

     本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号