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

Jenkins运维之路(Jenkins使用Mysql作为信息存储)

在日常工作中我们会将一些环境变量的信息放在pipeline中执行定义,每次修改都要到jenkinsfile文件中进行修改或者操作,这两天看到jenkins可以直接操作数据库,忽然想到是否有一种可能将一些变量信息存入到数据库当中,在构建过程中通过从数据库中获取变量信息,这样会对运维更加的友好,目前我这只是一个测试(为每个项目创建了一张表),如果拿到生产环境中最好是创建一个表然后通过一些关键字作为搜索ID或匹配条件来从表中索取信息。

1、安装配置数据库插件

插件名称: Database , MySQL Database

image-20250928142535251

image-20250928142535251

创建库的命令

CREATE DATABASE jenkins CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2、创建测试表并插入测试数据

# 创建表
CREATE TABLE `HelloWorld-SqlPipeline` (`git_repo_url` varchar(255) DEFAULT NULL,`registry_url` varchar(255) DEFAULT NULL,`harbor_url` varchar(255) DEFAULT NULL,`project_group` varchar(255) DEFAULT NULL,`project_name` varchar(255) DEFAULT NULL,`container_name` varchar(255) DEFAULT NULL,`ops_share_library` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;# 插入数据(数据大家自己定义)
INSERT INTO `HelloWorld-SqlPipeline` (`git_repo_url`, `registry_url`, `harbor_url`, `project_group`, `project_name`, `container_name`, `ops_share_library`) 
VALUES 
('git@gitee.com:xxxx/spring-boot-3-hello-world-jdk21.git', 'harbor.xxx.xxx', 'https://harbor.xxx.xxx', 'devops', 'hello-world-jdk21', 'hello-world-jdk21', 'git@gitee.com:xxxx/ops-share-librarya.git');

3. 共享库中创建mysql方法

package org.devopsdef get_mysql_msg_map(String dbName, String tableName) {def resultMap = [:] // 创建一个空的 Map 用于存储结果getDatabaseConnection(type: 'GLOBAL') {def result = sql(sql: "SELECT * FROM `${dbName}`.`${tableName}`;")if (result) {println "查询结果: ${result}" // 调试输出result.each { row ->row.each { key, value ->resultMap[key] = value // 将字段名作为键,字段值作为值}}} else {println "查询没有返回任何结果"}}return resultMap // 返回结果 Map
}

image-20250928143305092

image-20250928143305092

4.在Jenkins中引入mysql方法并测试是否能够获取数据

这里我是每个流水线创建了一个表,这样其实不太合理,但是因为测试所以就无所谓了

#!groovy@Library('ops-share-librarya@master') _def nexus = new org.devops.nexus()
def sonarq = new org.devops.sonarq()
def dingtalk = new org.devops.dingtalk()//new一个对象
def mysql = new org.devops.mysql()
//调用对象中的方法并传入参数(数据库名,表名)来获取一个map
def job_msg_map = mysql.get_mysql_msg_map('jenkins','HelloWorld-SqlPipeline')
//定义个全局变量,并使用map中键对应的值
env.GIT_REPO_URL_MAP = job_msg_map.git_repo_urlpipeline {agent { node { label "node47"}}tools {//...省略} environment {//...省略}options {//...省略}parameters {//...省略}stages {stage('获取数据') {steps {script {// 测试调用结果println "GIT_REPO_URL_MAP: ${GIT_REPO_URL_MAP}"}}}    stage('Example') {//...省略}stage('Check requirement') {//...省略}stage('CleanWorkDir') {//...省略}stage('Checkout') {//...省略}stage('Build') {//...省略}stage('Upload to Nexus') {//...省略}stage("SonarQube Analysis") {//...省略}stage("Quality Gate") {//...省略}stage('Wait for SonarQube Analysis') {//...省略}}post {//...省略}
}

image-20250928144137178

image-20250928144137178

很多的项目变量信息其实都可以存储到数据库当中,这样很方便我们运维统一管理。

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

相关文章:

  • 爬虫访问第三方 HTTPS 网站时遇到的 SSL 异常处理
  • JavaWeb 课堂笔记 —— 22 登录校验
  • 整合营销传播案例广西网络优化seo
  • Mac电脑解决 npm 和 Yarn 安装时的证书过期问题
  • JavaScript继承详讲
  • 怎么理解ES的shard和segment
  • AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
  • 新乡网站关键词优化电商网站开发实战视频教程
  • 公司无网站无平台怎么做外贸wordpress检查php版本号
  • Spark核心Shuffle详解(二)ShuffleHandler
  • React Native启动性能优化实战:Hermes + RAM Bundles + 懒加载
  • 怎么做淘宝客个人网站wordpress可视化编辑插件下载
  • [C++项目框架]gflags和gtest的简单介绍
  • Vue2 和 Vue3 中使用 Vue Router 的详细过程
  • 微服务项目->在线oj系统(Java-Spring)-后台管理(2)
  • 【MySQL体系】第2篇:MySQL索引类型和原理
  • flash型的著名网站网站开发公司怎么接单
  • 【第五章:计算机视觉-项目实战之图像分割实战】2.图像分割实战:人像抠图-(1)人像抠图Image Matting算法详解
  • 使用 PyTorch 构建并训练 CNN 模型
  • 如何做电影网站狼视听seo外包优化服务商
  • blender布局工作区突然变得很卡
  • 【计算机视觉】图像去雾技术
  • 工信部网站icp备案号文艺范wordpress主题
  • 树莓派无法播放哔哩哔哩等视频
  • 华为芯片泄密案警示:用Curtain e-locker阻断内部数据泄露
  • 记一次达梦数据库的查询异常
  • 泸州市建设工程管理局网站58网站怎么做品牌推广
  • 个人主题网站设计论文北京seo推广系统
  • AI编程开发系统001-基于SpringBoot+Vue的旅游民宿租赁系统
  • 通用人工智能(AGI):从技术探索到社会重构的 2025 展望