Jenkins——Jenkins 构建Maven项目(三种风格的项目构建自由风格Maven风格Pipeline流水线风格)

Posted stan Z

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins——Jenkins 构建Maven项目(三种风格的项目构建自由风格Maven风格Pipeline流水线风格)相关的知识,希望对你有一定的参考价值。

Jenkins 构建Maven项目

紧接着上一篇博客继续jenkins的学习
Jenkins介绍和安装配置

Jenkins构建的项目类型介绍

Jenkins中自动构建项目的类型有很多,常用的有以下三种:

  • 自由风格软件项目(FreeStyle Project)
  • Maven项目(Maven Project)
  • 流水线项目(Pipeline Project)

流水线类型最推荐使用,灵活度最高

自由风格项目构建

自由风格项目来完成项目的集成过程:

拉取代码->编译->打包->部署

拉取代码

创建一个新项目
在这里插入图片描述
源码管理 添加Git
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
代码拉取到了jenkins
在这里插入图片描述

编译打包

打开之前的项目
添加shell命令
在这里插入图片描述
开始编译构建
在这里插入图片描述
编译构建成功
在这里插入图片描述
在jenkens 工作目录里的项目目录也有了构建成功的target目录 里面有war包
在这里插入图片描述

部署

把项目部署到远程的Tomcat里面

需要在jenkins上安装 Deploy to container插件

Jenkins本身无法实现远程部署到Tomcat的功能,需要安装Deploy to container插件实现

在这里插入图片描述
安装完毕之后
回到项目的配置里在最下面找到构建后操作
选择Deploy war/ear to a container
在这里插入图片描述
找到war包 在target目录下 .*代表所有
在这里插入图片描述
添加容器 选择tomcat 8.x
在这里插入图片描述
接下来又需要添加凭据
使用账号密码凭据类型
在这里插入图片描述

在这里插入图片描述
构建项目
构建成功之后打开浏览器
在这里插入图片描述
在这里插入图片描述
点击项目
成功部署
在这里插入图片描述

改动后的持续集成

我将代码里面的主页面的字修改了
在这里插入图片描述
将代码push到仓库
仓库可看见已经改变
在这里插入图片描述
然后重新构建项目
在这里插入图片描述

Maven项目构建

安装Maven Integration插件
在这里插入图片描述
在这里插入图片描述
构建maven项目
在这里插入图片描述
源码管理还是和之前一样
在这里插入图片描述
只需要填clean package
在这里插入图片描述
构建后操作还是选择部署到一个容器
在这里插入图片描述
在这里插入图片描述
构建项目之后 打开浏览器 和之前一样
在这里插入图片描述
点进去之后显示项目

在这里插入图片描述

Pipeline流水线项目构建

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

使用Pipeline有什么好处:

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

如何创建 Jenkins Pipeline呢

  • Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy
  • Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法
  • Pipeline 也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一个 Jenkinsfile 脚本文件放入项目源码库中(一般我们都推荐在 Jenkins 中直接从源代码控制(SCM)中直接载入 Jenkinsfile Pipeline 这种方法)

安装Pipeline插件

在这里插入图片描述
新建一个流水线任务
在这里插入图片描述
选择一个模板
在这里插入图片描述

这里是声明式的写法

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
            }
        }
    }
}
  • stages:代表整个流水线的所有执行阶段。通常stages只有1个,里面包含多个stage
  • stage:代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段
  • steps:代表一个阶段内需要执行的逻辑。steps里面是shell脚本,git拉取代码,ssh远程发布等任意内容
我们就可以模仿编写一个基础的声明式语法

pipeline {
    agent any

    stages {
        stage('Pull code') {
            steps {
                echo 'pull code'
            }
        }
        stage('build project') {
            steps {
                echo 'build project'
            }
        }
        stage('publish project') {
            steps {
                echo 'publish project'
            }
        }
    }
}

跑一下代码
在这里插入图片描述
这里流水线特有的视图
在这里插入图片描述

这是脚本式的语法

node {
    def mvnHome
    stage('pull code') { // for display purposes
        echo 'pull code'
    }
    stage('Build project') {
        echo 'Build 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 命令一样。

在这里插入图片描述

拉取代码

在这里插入图片描述
在这里插入图片描述
checkout:从版本控制拉取代码
在这里插入图片描述
这里和之前一样 选择完毕之后 就可以产生脚本代码
在这里插入图片描述
在这里插入图片描述
将代码复制到我们任务配置里

pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '41580d48-d4c3-4116-9a71-4d4d777c5753', url: 'git@192.168.188.97:maomao_group/java_demo.git']]])
            }
        }
    }
}

构建任务之后 已经从Git仓库拉取到了代码
在这里插入图片描述

在这里插入图片描述

编译打包

接着去片段生成器生成代码
在这里插入图片描述

pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '41580d48-d4c3-4116-9a71-4d4d777c5753', url: 'git@192.168.188.97:maomao_group/java_demo.git']]])
            }
        }
        stage('build project') {
            steps {
                sh 'mvn clean package'
            }
        }
        
    }
}

在这里插入图片描述

部署

选择部署到容器的语法
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '41580d48-d4c3-4116-9a71-4d4d777c5753', url: 'git@192.168.188.97:maomao_group/java_demo.git']]])
            }
        }
        stage('build project') {
            steps {
                sh 'mvn clean package'
            }
        }
        stage('publish project') {
            steps {
                deploy adapters: [tomcat8(credentialsId: '2d2bfcb9-0d59-4415-b482-f624db6ce982', path: '', url: 'http://47.109.20.143:8080')], contextPath: null, war: 'target/*.war'
            }
        }
        
    }
}

构建任务
在这里插入图片描述

管理Jenkinsfile脚本文件

刚才我们都是直接在Jenkins的UI界面编写Pipeline代码,这样不方便脚本维护,建议把Pipeline脚本放在项目中(一起进行版本控制)

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

在这里插入图片描述

将脚本文件上传至仓库
在这里插入图片描述
查看仓库 已经有了脚本文件
在这里插入图片描述
如果脚本丢失,可用通过这种方式获取脚本
在这里插入图片描述

以上是关于Jenkins——Jenkins 构建Maven项目(三种风格的项目构建自由风格Maven风格Pipeline流水线风格)的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins——Jenkins 构建Maven项目(三种风格的项目构建自由风格Maven风格Pipeline流水线风格)

Jenkins——Jenkins构建Maven项目(三种风格)+Jenkins项目构建细节

Jenkins——Jenkins构建Maven项目(三种风格)+Jenkins项目构建细节

jenkins 怎么搭建maven

jenkins为啥只打印maven的构建日志,不显示项目启动日志?

jenkins(三)部署后台服务