【CI/CD】Jenkinsfile管理+参数化构建+邮件通知以及Jenkins + SonarQube 代码审查

embedded/2025/2/28 4:19:57/

文章目录

  • 一、管理 Jenkinsfile 脚本文件
    • 将 Pipeline 脚本放入项目
      • 示例:
      • 提交代码:
    • Jenkins 引用 Jenkinsfile
  • 二、Jenkins 参数化构建
    • 配置参数化构建
      • 示例:
      • 提交代码:
    • 2. 测试参数化构建
  • 三、配置邮箱服务器发送构建结果
    • 安装插件
    • 配置邮箱服务器
    • 添加邮件模板
    • 修改 Jenkinsfile
      • 提交代码:
      • 测试邮件通知
  • 四、Jenkins + SonarQube 代码审查
    • 安装 SonarQube
    • Jenkins 配置 SonarQube
    • 配置 SonarQube 项目
    • 修改 Jenkinsfile
      • 提交代码:
    • 测试代码审查

一、管理 Jenkinsfile 脚本文件

将 Pipeline 脚本放入项目

  • 目的:将 Pipeline 脚本与项目代码一起进行版本控制,便于维护和备份。
  • 步骤
    1. 在项目根目录创建 Jenkinsfile 文件。
    2. 将 Pipeline 脚本内容复制到 Jenkinsfile 中。
    3. 提交并推送到 GitLab。

示例:

cd /root/web_demo
vim Jenkinsfile
# 添加以下内容
pipeline {agent anystages {stage('拉取代码') {steps {checkout([$class: 'GitSCM', branches: [[name: '*/master']], userRemoteConfigs: [[url: 'git@192.168.80.10:devops_group/web_demo.git', credentialsId: 'gitlab-auth-ssh']]])}}stage('编译构建') {steps {sh 'mvn clean package'}}stage('项目部署') {steps {deploy adapters: [tomcat9(credentialsId: 'tomcat-auth', path: '', url: 'http://192.168.80.12:8080')], war: 'target/*.war'}}}
}

提交代码:

git add .
git commit -m "添加 Jenkinsfile"
git push -u origin master

Jenkins 引用 Jenkinsfile

  • 步骤
    1. 进入 Jenkins 项目配置页面。
    2. 流水线 部分,选择 Pipeline script from SCM
    3. 配置 Git 仓库地址和凭据。
    4. 指定分支和脚本路径(Jenkinsfile)。
    5. 保存并触发构建。

二、Jenkins 参数化构建

配置参数化构建

  • 目的:通过用户输入动态传入参数(如分支名称),实现灵活构建。
  • 步骤
    1. 进入 Jenkins 项目配置页面。
    2. 勾选 This project is parameterized
    3. 添加 String Parameter,名称设为 branch,默认值为 master
    4. 修改 Jenkinsfile,引用参数 ${branch}

示例:

pipeline {agent anystages {stage('拉取代码') {steps {checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], userRemoteConfigs: [[url: 'git@192.168.80.10:devops_group/web_demo.git', credentialsId: 'gitlab-auth-ssh']]])}}stage('编译构建') {steps {sh 'mvn clean package'}}stage('项目部署') {steps {deploy adapters: [tomcat9(credentialsId: 'tomcat-auth', path: '', url: 'http://192.168.80.12:8080')], war: 'target/*.war'}}}
}

提交代码:

git add .
git commit -m "支持参数化构建"
git push -u origin master

2. 测试参数化构建

  • 在 Jenkins 中点击 Build with Parameters,输入分支名称(如 v1),触发构建。

三、配置邮箱服务器发送构建结果

安装插件

  • 插件名称Email Extension Template
  • 安装路径:Manage Jenkins → Manage Plugins → 可选插件。

配置邮箱服务器

  • 步骤
    1. 进入 Manage Jenkins → Configure System
    2. 配置 Jenkins Location
      • Jenkins URL:http://<Jenkins_IP>:8080
      • 系统管理员邮件地址:your-email@example.com
    3. 配置 Extended E-mail Notification
      • SMTP 服务器:smtp.qq.com
      • SMTP 端口:465
      • 使用 SSL。
      • 配置凭据(邮箱账号和授权码)。
    4. 配置 邮件通知
      • 同上,配置 SMTP 服务器和凭据。

添加邮件模板

  • 在项目根目录创建 email.html 文件,内容如下:
<html>
<body>
<h2>构建结果通知</h2>
<p>项目名称:${PROJECT_NAME}</p>
<p>构建编号:${BUILD_NUMBER}</p>
<p>构建状态:${BUILD_STATUS}</p>
</body>
</html>

修改 Jenkinsfile

  • Jenkinsfile 中添加 post 块,发送邮件:
pipeline {agent anystages {// 原有阶段}post {always {emailext(subject: '构建结果: ${PROJECT_NAME} - 构建 #${BUILD_NUMBER} - ${BUILD_STATUS}!',body: '${FILE,path="email.html"}',to: 'your-email@example.com')}}
}

提交代码:

git add .
git commit -m "添加邮件通知"
git push -u origin master

测试邮件通知

  • 触发构建,查看邮箱是否收到构建结果通知。

四、Jenkins + SonarQube 代码审查

安装 SonarQube

  • 步骤
    1. 安装 JDK 1.8 和 MySQL 5.7。
    2. 创建数据库 sonar
    3. 下载并解压 SonarQube。
    4. 修改 sonar.properties 配置文件:
      • 数据库连接信息。
      • Web 端口(默认 9000)。
    5. 启动 SonarQube:
      su sonar ./bin/linux-x86-64/sonar.sh start
      

Jenkins 配置 SonarQube

  • 步骤
    1. 安装 SonarQube Scanner 插件。
    2. 配置 SonarQube 服务器:
      • 进入 Manage Jenkins → Configure System → SonarQube servers
      • 添加 SonarQube 服务器地址和 Token。
    3. 配置 SonarQube Scanner 工具:
      • 进入 Manage Jenkins → Global Tool Configuration
      • 添加 SonarQube Scanner,选择自动安装。

配置 SonarQube 项目

  • 在项目根目录创建 sonar-project.properties 文件:
sonar.projectKey=web_demo
sonar.projectName=web_demo
sonar.projectVersion=1.0
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**
sonar.java.binaries=.
sonar.java.source=1.8
sonar.java.target=1.8
sonar.sourceEncoding=UTF-8

修改 Jenkinsfile

  • 添加 SonarQube 代码审查阶段:
pipeline {agent anystages {stage('拉取代码') {steps {checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], userRemoteConfigs: [[url: 'git@192.168.80.10:devops_group/web_demo.git', credentialsId: 'gitlab-auth-ssh']]])}}stage('SonarQube 代码审查') {steps {script {scannerHome = tool 'sonar-scanner'}withSonarQubeEnv('sonarqube') {sh "${scannerHome}/bin/sonar-scanner"}}}stage('编译构建') {steps {sh 'mvn clean package'}}stage('项目部署') {steps {deploy adapters: [tomcat9(credentialsId: 'tomcat-auth', path: '', url: 'http://192.168.80.12:8080')], war: 'target/*.war'}}}
}

提交代码:

git add .
git commit -m "添加 SonarQube 代码审查"
git push -u origin master

测试代码审查

  • 在 Jenkins 中触发构建,查看 SonarQube 界面中的审查结果。

http://www.ppmy.cn/embedded/167715.html

相关文章

跨平台公式兼容性大模型提示词模板(飞书 + CSDN + Microsoft Word)

飞书云文档 CSDN MD编辑器 Microsoft Word 跨平台公式兼容方案&#xff1a; 一、背景痛点与解决方案 在技术文档创作中&#xff0c;数学公式的跨平台渲染一直存在三大痛点&#xff1a; 飞书云文档&#xff1a;原生KaTeX渲染与导出功能存在语法限制微软Word&#xff1a;Math…

初识Skywalking

背景 筒子们&#xff0c;最近雷袭又接触到一项新工具&#xff1a;Skywalking&#xff0c;本着好东西要和大家分享的原则&#xff0c;在对它有了初步了解&#xff0c;草草的进行了实践之后&#xff0c;就迫不及待的把它推荐给大家了。在写本篇博客时&#xff0c;本人对Skywalkin…

电脑软件:推荐一款非常强大的视频音频转换剪辑工具FFmpeg Batch AV Converter V3.12

目录 一、软件介绍 二、软件功能 三、软件特点 四、使用技巧 在多媒体处理领域&#xff0c;FFmpeg Batch AV Converter以其强大的功能和便捷的操作方式&#xff0c;成为了许多用户的首选工具。这款软件以其高效的批量处理能力、直观的图形用户界面&#xff08;GUI&#xff…

亚马逊云科技MySQL托管服务:Amazon RDS for MySQL的技术优势与成本优化实践

引言&#xff1a; 在数字化转型的浪潮中&#xff0c;数据库作为企业核心业务的“中枢神经”&#xff0c;其稳定性、性能及成本直接影响企业的运营效率和竞争力。然而&#xff0c;自建MySQL数据库的复杂性、运维成本高企、扩展性不足等问题&#xff0c;始终是开发者与…

mac 下 java 调用 gurobi 不能加载 jar

在 mac 电脑中的 java 始终不能加载 gurobi 的 jar 包&#xff0c;java 的开发软件 eclipse&#xff0c;idea 总是显示找不到 gurobi 的 jar 包&#xff0c;但是 jar 包明明就在那里。 摸索了三个小时&#xff0c;最后发现原因竟然是&#xff1a; jar 包太新&#xff0c;替换…

使用Python开发PDF文本提取工具

在日常工作中&#xff0c;我们经常需要从PDF文档中提取文本内容。虽然市面上有不少相关工具&#xff0c;但它们要么功能过于复杂&#xff0c;要么使用不够方便。本文将介绍如何使用Python开发一个简单实用的PDF文本提取工具&#xff0c;该工具具有图形界面&#xff0c;操作简单…

危化品经营单位安全管理人员的职责及注意事项

危化品经营单位安全管理人员肩负着保障经营活动安全的重要责任&#xff0c;以下是其主要职责及注意事项&#xff1a; 职责 1. 安全制度建设与执行&#xff1a;负责组织制定本单位安全生产规章制度、操作规程和生产安全事故应急救援预案&#xff0c;确保这些制度符合国家相关法…

针对视频内容进行检测开源项目

以下是10个可以实现视频是否涉及擦边或黄色内容检测的免费开源GitHub项目推荐&#xff1a; 1. **OpenNSFW2** OpenNSFW2 是一个用于检测图片和视频是否包含成人内容的开源库。它基于深度学习模型&#xff0c;能够实时分析视频帧并给出概率值&#xff0c;判断内容是否涉及…