jenkins流水线使用mysql数据库
背景
在某些情况下, 我们可能需要通过jenkins连接数据库做一些数据的持久化操作
环境准备
mysql数据库
以往安装mysql数据库都是在网上先找的安装教程,捣鼓半天才能安装上。后来发现通过docker安装mysql好简单,所以本次通过docker来安装mysql。
安装
安装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
安装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
准备配置了myslq容器的docker-compose.yml 配置文件
version : '2'
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
启动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
}
关于找一找教程网
本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[jenkins流水线使用mysql数据库]http://www.zyiz.net/tech/detail-110049.html