文章目录

  • 一、Jenkins项目构建类型
  • 二、自由风格项目构建
  • 1. 创建项目
  • 2. 编译打包
  • 3. 部署
  • 4. 演示改动代码后的持续集成
  • 三、Maven项目构建
  • 1. 安装 Maven Integration 插件
  • 2. 创建Maven项目
  • 3. 配置项目
  • 4. 在 IDEA 中源码修改并提交到 gitlab
  • 5. 构建并发布
  • 四、Pipeline流水线项目构建
  • 1.Pipeline简介
  • 2.使用Pipeline的好处
  • 3. 创建Pipeline项目方式
  • 4.安装Pipeline插件
  • 5. Declarative声明式
  • 6. 使用声明式构建
  • 7. Pipeline Script from SCM


一、Jenkins项目构建类型

  • Jenkins中自动构建项目的类型有很多,常用的有以下三种:
    自由风格软件项目(FreeStyle Project)Maven项目(Maven Project)流水线项目(Pipeline Project)
  • 每种类型的构建其实都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在实际开发中可以根据自己的需求和习惯来选择。(PS:个人推荐使用流水线类型,因为灵活度非常高)

二、自由风格项目构建

下面演示创建一个自由风格项目来完成项目的集成过程: 拉取代码->编译->打包->部署

1. 创建项目

jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins

配置源码管理,使用ssh方式从gitlab拉取代码,配置完成后,点击应用并保存

jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins_02


jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_03


jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_04

2. 编译打包

构建->添加构建步骤->Executor Shell,设置完成后,点击应用并保存

jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_05

echo "开始编译和打包" 
mvn clean package 
echo "编译和打包结束"

再次构建,可以看到结果成功

jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins_06


可以在target目录中查看到产生的war包

jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins_07

3. 部署

我们需要把项目部署到远程的Tomcat里面,需要安装 Deploy to container插件,因为 Jenkins 本身无法实现远程部署到Tomcat的功能,需要安装此插件来实现

jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins_08

  • 增加构建后操作

    先添加Tomcat用户凭证

jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_09


然后添加构建后操作

jenkins流水线配置sonarqube jenkins 自由风格 流水线_git_10

开始构建

jenkins流水线配置sonarqube jenkins 自由风格 流水线_git_11

jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_12

jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins_13

4. 演示改动代码后的持续集成

在 IDEA 中源码修改并提交到 gitlab

jenkins流水线配置sonarqube jenkins 自由风格 流水线_git_14


jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins_15

jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_16

jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_17


在gitlab上查看是否提交成功

jenkins流水线配置sonarqube jenkins 自由风格 流水线_jenkins_18

jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_19

jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_20


访问Tomcat中项目,可以看到成功发布出去了

jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_21

三、Maven项目构建

1. 安装 Maven Integration 插件

jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_22

2. 创建Maven项目

jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins_23

3. 配置项目

拉取代码和远程部署的过程和自由风格项目一样,只是"构建"部分不同

jenkins流水线配置sonarqube jenkins 自由风格 流水线_jenkins_24

jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins_25

4. 在 IDEA 中源码修改并提交到 gitlab

jenkins流水线配置sonarqube jenkins 自由风格 流水线_jenkins_26

jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins_27


jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_28

5. 构建并发布

jenkins流水线配置sonarqube jenkins 自由风格 流水线_jenkins_29


jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_30

四、Pipeline流水线项目构建

1.Pipeline简介

概念:
  Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。

2.使用Pipeline的好处

代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。
持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。
可停止:Pipeline可接收交互式输入,以确定是否继续执行Pipeline。
多功能:Pipeline支持现实世界中复杂的持续交付要求。它支持fork/join、循环执行,并行执行任务的功能。
可扩展:Pipeline插件支持其DSL的自定义扩展 ,以及与其他插件集成的多个选项。

3. 创建Pipeline项目方式

Pipeline 脚本是由 Groovy 语言实现的

  • Groovy Pipeline 支持两种语法:
    Declarative(声明式)Scripted Pipeline(脚本式)
  • Pipeline 也有两种创建方法:
    ① 直接在 Jenkins 的 Web UI 界面中输入脚本② 通过创建一个 Jenkinsfile 脚本文件放入项目源码库中

一般我们都推荐在 Jenkins 中直接从源代码控制(SCM) 中直接载入 Jenkinsfile Pipeline 这种方法

4.安装Pipeline插件

Manage Jenkins->Manage Plugins->可选插件


5. Declarative声明式

创建项目

jenkins流水线配置sonarqube jenkins 自由风格 流水线_jenkins_31


流水线->选择HelloWorld模板

jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins_32


jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins_33

stages:代表整个流水线的所有执行阶段。通常 stages 只有 1 个,里面包含多个 stage。
stage:代表流水线中的某个阶段,可能出现 n 个。一般分为拉取代码,编译构建,部署等阶段。
steps:代表一个阶段内需要执行的逻辑。steps 里面是 shell 脚本,git 拉取代码,ssh 远程发布等任意内容。

  • 编写一个简单声明式 Pipeline
node {
    def mvnHome
    stage('pull code') { 
      echo 'pull code'    	
    }
    stage('Build project') {
      echo 'built project'
    } 
    stage('publish project') {
      echo 'publish project'
    }
}

拉取代码——编译构建——项目部署

Node:节点,一个 Node 就是一个 Jenkins 节点,Master 或者 Agent,是执行 Step的具体运行环境,后续讲到Jenkins的Master-Slave架构的时候用到。
Stage:阶段,一个 Pipeline 可以划分为若干个Stage,每个 Stage 代表一组操作,比如: Build、Test、Deploy,Stage 是一个逻辑分组的概念。
Step:步骤,Step 是最基本的操作单元,可以是打印一句话,也可以是构建一个 Docker 镜像, 由各类 Jenkins插件提供,比如命令:sh ‘make’,就相当于我们平时 shell 终端中执行 make 命令一样。

jenkins流水线配置sonarqube jenkins 自由风格 流水线_Jenkins_34


jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_35

6. 使用声明式构建

jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_36


jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_37


jenkins流水线配置sonarqube jenkins 自由风格 流水线_jenkins_38


jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_39


jenkins流水线配置sonarqube jenkins 自由风格 流水线_jenkins_40


jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_41


jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_42


拉取代码示例:

pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '1569d1b5-7568-4b58-abbf-63b70b624ada', url: 'git@192.168.8.20:gmy/web_demo.git']]])
            }
        }
    }
}

jenkins流水线配置sonarqube jenkins 自由风格 流水线_git_43

jenkins流水线配置sonarqube jenkins 自由风格 流水线_jenkins_44

jenkins流水线配置sonarqube jenkins 自由风格 流水线_git_45

jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_46


jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_47

整个过程的代码如下

pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'afaf7e66-9230-475a-a7fb-f33a2283067e', url: 'git@192.168.8.20:gmy/web_demo.git']]])
            }
        }
        stage('built project') {
            steps {
                sh 'mvn clean package'
            }
        }
        stage('publish') {
            steps {
                deploy adapters: [tomcat8(credentialsId: '2a09c577-79ca-4b5a-ad19-44c6708e42b9', path: '', url: 'http://192.168.8.18:8080/')], contextPath: '/', war: 'target/*.war'
            }
        }
    }
}

7. Pipeline Script from SCM

由于在Jenkins的UI界面编写Pipeline代码不方便脚本维护,并且脚本容易丢失,所以可以把Pipeline脚本放在项目中(一起进行版本控制)

在项目根目录建立Jenkinsfile文件,把内容复制到该文件中

jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_48


jenkins流水线配置sonarqube jenkins 自由风格 流水线_git_49


jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_50


jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_51


jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_52


jenkins流水线配置sonarqube jenkins 自由风格 流水线_git_53


重新配置web_demo_pipeline项目

jenkins流水线配置sonarqube jenkins 自由风格 流水线_git_54

jenkins流水线配置sonarqube jenkins 自由风格 流水线_git_55

jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_56


在 IDEA 中源码修改并提交到 gitlab

jenkins流水线配置sonarqube jenkins 自由风格 流水线_jenkins_57

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8" %>

jenkins流水线配置sonarqube jenkins 自由风格 流水线_git_58


jenkins流水线配置sonarqube jenkins 自由风格 流水线_jenkins_59


jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_60


jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_61


jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_62


jenkins流水线配置sonarqube jenkins 自由风格 流水线_devops_63


jenkins流水线配置sonarqube jenkins 自由风格 流水线_maven_64


jenkins流水线配置sonarqube jenkins 自由风格 流水线_git_65


jenkins流水线配置sonarqube jenkins 自由风格 流水线_git_66