jenkins查询mysql_jenkins流水线使用mysql数据库
在某些情況下, 我們可能需要通過(guò)jenkins連接數(shù)據(jù)庫(kù)做一些數(shù)據(jù)的持久化操作
環(huán)境準(zhǔn)備
mysql數(shù)據(jù)庫(kù)
以往安裝mysql數(shù)據(jù)庫(kù)都是在網(wǎng)上先找的安裝教程,搗鼓半天才能安裝上。后來(lái)發(fā)現(xiàn)通過(guò)docker安裝mysql好簡(jiǎn)單,所以本次通過(guò)docker來(lái)安裝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
#開(kāi)機(jī)啟動(dòng)docker
sudo systemctl enable docker
#啟動(dòng)docker
sudo systemctl start docker
#創(chuàng)建docker組
sudo groupadd docker
#將當(dāng)前用戶加入docker組
sudo usermod -aG docker $USER
#如果安裝失敗了,想卸載重裝, 可通過(guò)下面命令來(lái)卸載
yum remove docker-ce
復(fù)制代碼
安裝docker compose
雖然通過(guò)Dockerfile就可以定義一個(gè)docker容器, 但是如果我們有多個(gè)容器需要配合使用時(shí)就不是很方便了,因此此處采用了docker compose。 docker compose 是一個(gè)像Dockerfile定義 docker 容器一樣能夠定義容器集群的編排和部署工具,可以很方便地幫助我們實(shí)現(xiàn)容器管理。
docker compse的安裝:
# 安裝 ---二進(jìn)制包。 如果curl下載不了, 則去此地址手動(dòng)下載: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授予可執(zhí)行權(quán)限
sudo chmod +x /usr/local/bin/docker-compose
#鏈接到usr/bin下,然后就可以通過(guò)docker-compsoe命令調(diào)用了
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
復(fù)制代碼
準(zhǔn)備配置了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
復(fù)制代碼
啟動(dòng)mysql容器
在有docker-compose.yml文件的路徑下執(zhí)行下面命令即可啟動(dòng)容器。
ps: 示例中將使用的docker-compose.yml 文件放在了 /home/docker/devops/compose下。可自行修改
cd /home/docker/devops/compose
#檢查yml文件是否配置正確, 如果docker-compose.yml有錯(cuò)誤,則下面命令會(huì)報(bào)錯(cuò)
docker-compose config
# 后臺(tái)方式啟動(dòng)容器
docker-compose up -d
#查看運(yùn)行中的容器
docker ps
#進(jìn)入運(yùn)行中的容器 進(jìn)入容器后,即可通過(guò) myslq -u root -p的方式登陸myslq數(shù)據(jù)庫(kù)了
# mysql的root密碼在docker-compose.yml里面的MYSQL_ROOT_PASSWORD項(xiàng)已經(jīng)配置了
docker exec -ti mydb sh
復(fù)制代碼
使用
由于我們已經(jīng)在docker-compse.yml里面暴露了3306端口,因此就可以通過(guò) 宿主機(jī)ip+端口方式訪問(wèn)mysql 。 如: jdbc:mysql://ip:3306/數(shù)據(jù)庫(kù)名稱(chēng)
jenkins方面
雖然jenkins流水線腳本通過(guò)groovy編寫(xiě)而且groovy可以使用數(shù)據(jù)庫(kù), 但是如果直接在流水線腳本中通過(guò)groovy使用數(shù)據(jù)庫(kù)時(shí)會(huì)面臨數(shù)據(jù)庫(kù)jdbc驅(qū)動(dòng)加載不到的問(wèn)題。 經(jīng)過(guò)搜索,發(fā)現(xiàn)jenkins已經(jīng)有了支持?jǐn)?shù)據(jù)庫(kù)的插件: database和MySQL Database Plugin
安裝
在jenkins插件管理頁(yè)面安裝database和MySQL Database Plugin
在jenkins系統(tǒng)設(shè)置界面配置數(shù)據(jù)庫(kù)連接
使用
插件安裝好以后就可以通過(guò)getDatabaseConnection 和 sql 這兩個(gè)方法來(lái)連接數(shù)據(jù)庫(kù)進(jìn)行操作了.
將sql語(yǔ)句和參數(shù)分開(kāi)是為了避免sql注入,如果不介意這個(gè), 那么就直接把參數(shù)寫(xiě)到sql語(yǔ)句里面去吧
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
}復(fù)制代碼
總結(jié)
以上是生活随笔為你收集整理的jenkins查询mysql_jenkins流水线使用mysql数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql隔离级别 简书_数据库事务和四
- 下一篇: 如何利用扩展欧几里得算法求解不定方程_客