Jenkins项目构建类型(纯小白使用教程3)

Jenkins项目构建类型(纯小白使用教程3)

Jenkins项目构建类型(纯小白使用教程2)

Jenkins构建的项目类型介绍

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

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

  • Maven项目(Maven Project)

  • 流水线项目(Pipeline Project)

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

自由风格项目构建

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

  • 新建项目web_demo_freestysle
  • 配置源码管理,从gitlab拉取代码
  • 构建->添加构建步骤->Executor Shell ps.这个自由风格的地方也可以使用gradle 使用
     echo "开始编译和打包" 
     mvn clean package 
     echo "编译和打包结束"

在这里插入图片描述

远程发布
  1. 安装 Deploy to container插件
    Jenkins本身无法实现远程部署到Tomcat的功能,需要安装Deploy to container插件实现
  2. 添加Tomcat用户凭证,选择Deploy to container
    在这里插入图片描述
  3. 添加凭证,构建项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. 服务器就会出现项目
    在这里插入图片描述
  5. war部署整个过程就此结束

这样部署的好处是不需要太多基础知识就能部署,坏处就是配置太过于分散

Maven项目构建

  1. 安装Maven Integration插件,安装完成后点击新建项目就会又一个maven选择
    在这里插入图片描述
  2. 最大的区别是这个地方,maven默认的地方是pom,其余地方都差不多

在这里插入图片描述

Pipeline流水线项目构建(重要的)

 概念 :Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,
 实现单个任务难以完成的复杂流程编排和可视化的工作。
  • 好处:
    - 代码: 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插件
  1. Manage Jenkins->Manage Plugins->可选插件
    在这里插入图片描述
    在这里插入图片描述
    新建项目可以看到配置
    在这里插入图片描述
学习下Pipeline语法

学习路径


pipeline { 
 agent any 
 stages { 
    stage('pull code') {
        steps { 
            checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '秘钥ssh', url: 'git@/web-demo.git']]])
            echo '拉取代码' 
        } 
     }
    stage('package code') {
        steps { 
            sh 'mvn clean package'
            echo '打包代码' 
        } 
    }
    stage('publish code') {
        steps { 
            deploy adapters: [tomcat8(credentialsId: '秘钥账号密码', path: '', url: 'http://:8080/')], contextPath: null, war: 'target/*.war'
            echo '上传代码' 
        } 
    }
 } 
}


Pipeline Script from SCM
刚才我们都是直接在Jenkins的UI界面编写Pipeline代码,这样不方便脚本维护,(如果Jenkins挂了就完了)建议把Pipeline脚本放在项目中(一起进
行版本控制)
  1. 在项目根目录建立Jenkinsfile文件,把内容复制到该文件中。(默认起名Jenkins,别整别的骚操作)

在这里插入图片描述

常用的构建触发器

Jenkins内置4种构建触发器:
  • 触发远程构建
  • 其他工程构建后触发(Build after other projects are build)
  • 定时构建(Build periodically)
  • 轮询SCM(Poll SCM)

触发远程构建

触发构建url:http://192.168.66.101:8888/job/web_demo_pipeline/build?token=6666
一般情况下,这个token是个加密字符串

在这里插入图片描述

其他工程构建后触发

  • 创建pre_job流水线工程
  • 配置需要触发的工程.在之前那个项目配置
    在这里插入图片描述
  • pre_job 构建完成之后,这个项目也会被构建

定时构建

在这里插入图片描述
定时字符串从左往右分别为: 分 时 日 月 周

每30分钟构建一次:H代表形参 H/30 * * * * 10:02 10:32
每2个小时构建一次: H H/2 * * *
每天的8点,12点,22点,一天构建3次: (多个时间点中间用逗号隔开) 0 8,12,22 * * *
每天中午12点定时构建一次 H 12 * * *
每天下午18点定时构建一次 H 18 * * *
在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * *
每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午
4:38) H H(9-16)/2 * * 1-5

轮询SCM

 轮询SCM,是指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建。

在这里插入图片描述
注意:这次构建触发器,Jenkins会定时扫描本地整个项目的代码,增大系统的开销,不建议使用。

Git hook自动触发构建(精华)

到在Jenkins的内置构建触发器中,轮询SCM可以实现Gitlab代码更新,项目自动构建,但是
该方案的性能不佳。那有没有更好的方案呢? 有的。就是利用Gitlab的webhook实现代码push到仓库,立即触发项目自动构建。
在这里插入图片描述

安装Gitlab Hook插件

需要安装 Gitlab Hook和GitLab 两个插件

新增点知识-安装内容,在安装hook的时候,Jenkins会告诉你这个问题,这个问题暂时没办法解决奥。可以换一种其他的方式保护一下
在这里插入图片描述

Jenkins设置自动构建

在这里插入图片描述

等会需要把生成的webhook URL配置到Gitlab中。

Gitlab配置webhook
  • 开启webhook功能 ,使用root账户登录到后台,点击Admin Area -> Settings -> Network
    勾选"Allow requests to the local network from web hooks and services"

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

在项目添加webhook

点击项目->Settings->Integrations
在这里插入图片描述
在这里插入图片描述
这里注意:以下设置必须完成,否则会报错!

路径: Manage Jenkins->Configure System
在这里插入图片描述

重新返回gitlab 点击上传,就可以看到Jenkins上构建
在这里插入图片描述
之后到idea编辑代码上传,就可以实现此功能了,有个问题啊,之前用的是root配置的项目,要切换成你在Jenkins配置的用户才能上传成功

Jenkins的参数化构建

 有时在项目构建的过程中,我们需要根据用户的输入动态传入一些参数,从而影响整个构建结果,这时我们可以使用参数化构建。
 有时候我们git上pull code不一定是master分支,所以这里需要动态修改

在这里插入图片描述

  1. 这个时候我们可以把构造触发器先取消掉,应用保存
    在这里插入图片描述
  2. 选择参数化构建过程,添加参数
    在这里插入图片描述
  3. 选择字符串参数

在这里插入图片描述

  1. 构建之后我们可以看到项目主页多了一个列表
    在这里插入图片描述

  2. 修改项目中master,用动态el做替换
    在这里插入图片描述

  3. 之后我们新增分支 V1
    在这里插入图片描述

  4. 可以在gitlab上看到项目分支
    在这里插入图片描述

  5. v1分支启动
    在这里插入图片描述
    在这里插入图片描述

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

  1. 安装Email Extension插件
    在这里插入图片描述

  2. Jenkins设置邮箱相关参数

Manage Jenkins->Configure System

在这里插入图片描述
Jenkins项目构建类型(纯小白使用教程4)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值