博客
关于我
Jenkins持续集成学习笔记(3)
阅读量:608 次
发布时间:2019-03-12

本文共 3074 字,大约阅读时间需要 10 分钟。

Jenkins构建Maven项目及流水线配置详解

Jenkins 是一款强大的持续集成(CI)工具,广泛应用于软件开发项目的构建、测试和部署等环节。本文将详细介绍 Jenkins 构建 Maven 项目的流程,并探讨流水线(Pipeline Project)的灵活配置方法,以及如何集成 SonarQube 进行代码审查。


Jenkins 项目构建类型(1)- Jenkins 构建的项目类型介绍

在 Jenkins 中,用于自动化构建的项目类型主要有以下三种:

  • 自由风格软件项目(FreeStyle Project)

    这是传统的构建类型,提供简单的构建流程,支持拉取代码、编译、打包和部署等步骤,操作直观但灵活性有限。

  • Maven 项目(Maven Project)

    专为 Maven 基本构建流程设计,适合标准化的项目管理,支持源码管理和远程部署。

  • 流水线项目(Pipeline Project)

    作为新一代构建类型,流水线通过代码实现构建流程,支持并行、循环和条件执行,适合复杂构建需求,灵活度最高。

  • 在实际开发中,可以根据项目需求选择合适的构建类型。个人推荐使用流水线类型,因其高效灵活。


    Jenkins 项目构建类型(2)- 自由风格项目构建

    以下是使用 Jenkins 自由风格项目完成项目构建的示例流程:

    拉取代码

  • 创建项目

    在 Jenkins UI 中选择“新建项目”,选择“自由风格项目”。

  • 配置源码管理

    在构建步骤中添加“拉取代码”步骤,设置 GitLab 或其他代码仓库 URL 和凭证,完成代码拉取。

  • 编译打包

  • 添加构建步骤,选择“执行 Shell 命令”:

    echo "开始编译和打包"mvn clean packageecho "编译和打包结束"
  • 编译前后分别截图,记录构建过程。

  • 部署

  • 安装 Deploy to Container 插件

    Jenkins 内置插件市场中下载并安装“Deploy to Container”插件,支持远程部署到如 Tomcat 的服务器。

  • 配置远程部署

    在构建后操作中,添加 Tomcat 用户凭证,指定目标服务器 URL 和项目路径。

  • 构建并部署

    点击“Build Now”,开始构建流程。部署完成后,访问服务器查看项目。


  • Jenkins 项目构建类型(3)- Maven 项目构建

    与自由风格项目类似,Maven 项目也有固定步骤:

  • 安装 Maven Integration 插件

    在 Jenkins UI 中安装“Maven Integration”插件,支持 Maven 命令执行。

  • 创建 Maven 项目

    选择“新建多个项目”中的“Maven Project”,配置项目目录和源码管理。

  • 构建流程

    与自由风格项目类似,拉取代码和远程部署步骤保持不变。


  • Jenkins 项目构建类型(4)- Pipeline 流水线项目构建

    Pipeline 简介

    • 概念

      Pipeline 是 Jenkins 的工作流框架,通过代码实现复杂构建过程,能够定义多个阶段(Stage)和步骤(Steps)。

    • 优势

      • 代码化:流程可检入源码控制系统 (SCM),便于维护和迭代。
      • 持久性:即使服务器重启,流程能恢复。
      • 可停止性:支持动态输入,按需终止。
      • 灵活性:支持并行、循环、条件执行等高级功能。

    Pipeline 语法快速入门

    1. Declarative Pipeline(声明式流水线)

    Declarative Pipeline 代码即描述性语法,适合新手使用。

    pipeline {    agent any    stages {        stage('拉取代码') {            steps {                echo '拉取代码'            }        }        stage('编译构建') {            steps {                echo '编译构建'            }        }        stage('项目部署') {            steps {                echo '项目部署'            }        }    }}

    2. Scripted Pipeline(脚本式流水线)

    Scripted Pipeline 使用 Groovy 语言编写更复杂逻辑。

    node {    def mvnHome    stage('拉取代码') {        steps {            checkout([$class: 'GitSCM', branches: [[name: '*/master']], ...])        }    }    stage('构建项目') {        steps {            sh 'mvn clean package'        }    }    stage('发布项目') {        steps {            deploy adapters: [tomcat8(credentialsId: '...', ...)]        }    }}

    常用构建触发器

    Jenkins 提供四种常用触发器:

  • 触发远程构建

    使用外部工具(如 HTTP 请求)触发 Jenkins 构建。

  • 其他工程构建后触发

    定义依赖项目,触发当前项目构建。

  • 定时构建

    定期(如每两分钟)自动启动构建。

  • 轮询 SCM(Poll SCM)

    定时扫描代码仓库,检测代码变更触发构建。


  • Git Hook 自动触发构建

    对于代码仓库变更时自动触发构建,可以使用 GitLab Hook:

  • 安装 GitLab Hook 插件

    安装 GitLab Hook 和相关插件,确保 Jenkins 和 GitLab 沟通。

  • 配置 Jenkins 及 GitLab

    在 Jenkins 中启用 Git Hook 功能,并配置 GitLab 项目的 webhook URL。

  • 测试与配置

    提交代码后,GitLab 自动触发 Jenkins 构建,检查构建结果。


  • 参数化构建

    在特定情况下,项目构建需要根据输入参数动态调整,可以使用参数化构建:

  • 设置参数

    在 Jenkins UI 中定义参数,如字符串、文件路径等。

  • 使用参数化配置

    在流水线 script 中引用参数,动态配置构建步骤。

  • 示例:分支参数化构建

    在 GitLab 新建分支,输入分支名称,流水线使用参数动态构建对应分支的项目。


  • Jenkins + SonarQube 代码审查

    安装与配置

  • 安装 SonarQube

    使用 Maven 聚合后的依赖项,优化项目分析。

  • 集成 Udemy 插件

    安装 SonarQube Scanner 插件,实现代码质量分析。

  • 在项目中添加或修改

    在项目根目录创建 sonar-project.properties,配置项目信息。

  • 流水线配置

    在流水线中加入代码审查阶段,使用 SonarQube 插件执行分析。


  • 代码审查后端

    通过整合 SonarQube,实现代码审查功能,定位潜在问题并生成报告。完成后,访问 SonarQube 界面查看审查结果和统计数据。


    通过以上配置,可以实现 Jenkins 多功能的项目构建与代码审查流程,利用流水线的灵活配置模式,提升自动化构建效率。

    转载地址:http://gjhxz.baihongyu.com/

    你可能感兴趣的文章
    MySQL 错误
    查看>>
    mysql 随机数 rand使用
    查看>>
    MySQL 面试题汇总
    查看>>
    MySQL 面试,必须掌握的 8 大核心点
    查看>>
    MySQL 高可用性之keepalived+mysql双主
    查看>>
    mysql 默认事务隔离级别下锁分析
    查看>>
    Mysql--逻辑架构
    查看>>
    MySql-2019-4-21-复习
    查看>>
    mysql-5.7.18安装
    查看>>
    MySQL-Buffer的应用
    查看>>
    mysql-cluster 安装篇(1)---简介
    查看>>
    mysql-connector-java各种版本下载地址
    查看>>
    mysql-EXPLAIN
    查看>>
    mysql-group_concat
    查看>>
    MySQL-redo日志
    查看>>
    MySQL-【1】配置
    查看>>
    MySQL-【4】基本操作
    查看>>
    Mysql-丢失更新
    查看>>
    Mysql-事务阻塞
    查看>>
    Mysql-存储引擎
    查看>>