Jenkins--任务详解

news2024/11/20 11:46:38

一、任务类型

Jenkins的主要功能的实现是由执行任务去完成的,常用的任务类型主要有以下三种:

  1. 自由风格任务(Free Style Project): 这是Jenkins中最常用的任务类型,允许你自定义各种构建步骤和配置选项,如源码管理、构建触发器、构建环境、构建步骤和构建后操作等。
  2. Maven项目任务(Maven Project):如果需要构建的项目使用的是Maven,那么可以选择这种类型的项目。Jenkins会自动识别Maven项目,并利用你项目中的pom文件进行构建,可以大大减轻构建配置。
  3. 流水线任务(Pipeline Project): 这种任务类型适合于复杂的构建流程,它支持声明式和脚本式语法,可以跨多个节点执行,并且可以实现更高级的构建逻辑,如依赖管理和并行构建等。

二、创建任务

在Dashboard页面左侧菜单栏中点击"新建任务",然后输入任务名,选择创建的任务类型,点击下面的确定按钮。
在这里插入图片描述

三、自由风格任务配置

3.1 General

在Jenkins的自由风格任务中,"General"配置主要用于设置任务的一些全局信息。以下是一些常规项功能介绍:

  1. Throttle builds:用于控制任务构建的数量。这个选项可以帮助你管理在特定时间内可以并行执行的构建数量,从而避免因过多并行构建导致资源竞争或服务过载。
  2. 丢弃旧的构建:用于设置保留构建历史的数量。这对于管理Jenkins服务器上的存储空间非常有用,特别是当你有大量的构建任务时。通过减少保留的构建数量,你可以节省硬盘空间,并可能提高Jenkins的性能。
  3. 参数化构建过程:允许创建参数化的构建流程。这意味着你可以为构建任务定义一系列可变的参数,然后在实际构建时传入这些参数,从而实现更加灵活和动态的构建过程。
  4. 在必要的时候并发构建:允许在构建过程中并行执行多个构建任务。默认情况下,Jenkins一次只能执行一个项目的单个构建,即任何其他想要开始的构建任务都会被放入构建队列中,直到当前的构建任务完成。

在这里插入图片描述

3.2 源码管理

一般是配合Git插件来拉取Git远程仓库中的代码。
在这里插入图片描述

3.3 构建触发器

在Jenkins中配置构建触发器,可以选择多种方式来触发构建,以下是一些常见的触发器配置方法:

  1. 触发远程构建:通过发送HTTP请求来远程触发Jenkins作业的构建,需要提供一个安全令牌(Token),确保只有知道令牌的请求才能触发构建。
  2. 其他工程构建后触发:当指定的其他Jenkins任务完成构建后,当前任务就会被触发。这种方式常用于构建链的场景,即一个任务的输出是另一个任务的输入,需要保证按顺序执行。
  3. 定时构建:通过Cron表达式来配置定时构建,使得Jenkins在指定的时间自动执行构建。
  4. GitHub hook trigger for GITScm polling:对于与Git仓库集成的项目,可以配置Webhook,以便在推送代码到Git仓库时自动触发Jenkins构建。这比轮询SCM更为高效,因为它是实时的。
  5. 轮询 SCM:指Jenkins定期检查代码仓库的改动,一旦检测到新的提交,就会自动触发构建。

在这里插入图片描述

3.4 构建环境

在Jenkins中配置任务的构建环境是一个重要的步骤,因为它允许您为构建过程设置必要的参数和条件。以下是一些常见的构建环境配置选项:

  1. Delete workspace before build starts: 在构建开始前清理工作空间。这意味着每次构建都会从干净的状态开始,有助于避免因残留的旧数据而导致的潜在问题。
  2. Use secret text(s) or file(s): 使用加密的文本或文件,这些可以在构建过程中安全地传递敏感信息,如密码或API密钥。
  3. Provide Configuration files:需要提供配置文件,在构建步骤中,可以编写脚本或使用Jenkins的内置步骤来读取配置文件,并根据文件中的设置来配置环境变量、数据库连接、应用程序参数等。
  4. Send files or execute commands over SSH before the build starts:在构建开始之前向远程服务器发送文件或执行命令,通常用于准备构建环境。例如启动服务、创建目录或配置环境变量。
  5. Send files or execute commands over SSH after the build runs:在构建完成后向远程服务器发送文件或执行命令。这通常用于部署应用程序、清理构建环境或记录构建结果。
  6. Inspect build log for published build scans:在构建完成后自动检查构建日志,以便查找和分析已发布的构建扫描结果。这些扫描结果通常包含构建的元数据、依赖关系和其他重要信息,对于理解构建的成功与否以及性能瓶颈非常有帮助。
  7. Terminate a build if it’s stuck:在构建过程中如果出现长时间无响应或卡住的情况时,自动终止该构建。这有助于防止因构建卡死而占用资源或影响其他构建的执行。
  8. With Ant:在Jenkins任务中配置Ant作为构建环境。
  9. 在构建日志中添加时间戳前缀:会在构建日志中添加时间戳前缀,以便查看构建日志的执行时间。

在这里插入图片描述

3.5 Build Steps

在Jenkins中配置任务的Build Steps是构建自动化过程的核心部分。在增加构建步骤的下拉框中选择所需的构建步骤类型,常用的构建步骤类型有以下几种:

  1. Run with timeout:允许在构建步骤中设置一个超时时间。当步骤执行时间超过设定的时间时,Jenkins会自动停止该步骤的执行,防止因为某些原因导致的长时间阻塞。
  2. Send files or execute commands over SSH:允许通过SSH协议在构建过程中向远程服务器发送文件或者执行命令。通常是通过安装和使用名为"Publish Over SSH"的插件来实现的。
  3. 执行 Windows 批处理命令:在构建时会执行指定的Windows批处理命令。要确保Jenkins服务器有权限访问执行批处理命令的环境,并且Jenkins需要能够找到批处理文件所在的路径。
  4. 执行 shell:在构建时会执行指定的shell脚本命令。
  5. 调用顶层Maven:在构建步骤中使用Maven插件来执行Maven命令。通常用于Java项目,因为它可以帮助你自动执行Maven生命周期中的不同阶段,如clean、compile、test、package、install等。

一般选择执行Shell,然后在文本框中输入构建过程中执行的Shell命令。
在这里插入图片描述

3.6 构建后操作

在Jenkins的自由风格任务中,"构建后操作"是一个非常重要的环节,它允许你在构建流程的最后一步执行一系列的操作,以达到自动化测试、部署或其他后续工作的目的。以下是一些常见的构建后操作及其用途:

  1. Aggregate downstream test results:在构建过程中聚合所有下游任务的测试结果。这对于需要执行多个测试任务的项目特别有用,因为它可以帮助你快速地查看所有测试的结果,而不需要单独检查每一个测试任务的输出。
  2. Publish JUnit test result report:将JUnit测试框架输出的XML测试结果文件转换成易于阅读的格式,并在Jenkins界面上展示出来。这对于自动化测试来说是非常重要的,因为它可以帮助开发者和测试者快速查看测试结果,从而提高工作效率。
  3. Publish Javadoc:将Java项目的文档(javadoc)发布到一个远程位置,如Web服务器或文件存储系统。这个功能对于文档管理和共享非常重要,因为它允许开发者和其他利益相关者访问项目的API文档,以便更好地理解和使用代码。
  4. 归档成品:在构建完成后将某些文件或目录存档起来。这通常用于保存构建产生的成品,如编译后的jar文件、war文件或其他类型的文件,以便于之后的部署、测试或其他用途。
  5. 构建其他工程:允许设置一个或多个其他Jenkins任务,以便在当前任务构建成功后自动触发它们。这个功能常用于依赖关系管理,即如果一个项目依赖于另一个项目的构建成果,那么可以在依赖项目构建完成后自动启动依赖项目的构建流程。
  6. 记录文件的指纹用于追踪:允许为特定的文件生成指纹,并在后续的构建中追踪这些文件的使用情况。这对于管理和追踪软件依赖关系非常有用,因为它可以帮助你了解哪些构建使用了哪些文件,从而更好地管理项目的构建和部署过程。
  7. Git Publisher:允许在构建成功后自动推送代码到远程Git仓库。这通常用于持续集成/持续部署(CI/CD)流程中,以确保最新的代码更改能够及时地推送到仓库中。
  8. E-mail Notification:允许在构建成功或失败时自动发送电子邮件通知给指定的收件人。这是一个非常实用的功能,特别是对于那些需要即时了解构建状态的用户或者团队。
  9. Editable Email Notification:允许对发送邮件通知的过程进行更多的自定义和控制。
  10. Send build artifacts over SSH:允许通过SSH协议将构建产物(比如jar包、war包等)传输到另一台服务器或者设备上。这个功能特别适合于需要将构建成果部署到生产环境或者其他特定环境的场景。
  11. Delete workspace when build is done:在构建完成后清理工作空间。这可以帮助节省磁盘空间,特别是在构建过程中会产生大量临时文件的场合。

四、Maven项目任务配置

Maven项目任务的配置与自由风格任务的配置基本相同,下面主要看下不同点。

4.1 Pre Steps

允许在构建流程开始之前执行一系列预处理步骤。这些预处理步骤可以是准备构建环境的命令、获取依赖关系、初始化数据库等。可以添加的步骤与自由风格任务的Build Steps一样。
在这里插入图片描述

4.2 Build

Build设置是非常关键的一部分,它决定了Jenkins如何运行Maven构建。主要由以下两部分组成:

  • Root POM:Maven项目的pom.xml文件的路径,是相对于Jenkins工作区的路径,而不是相对于你的项目源代码仓库的路径。如果你的项目是从版本控制系统中获取的,那么Jenkins会在每次构建之前自动从版本控制系统中拉取最新的代码,并将它们放在工作区内。所以这里Root POM指向的是工作区内的pom.xml文件,让Jenkins知道在哪里找到pom.xml文件,从而能够正确地执行Maven构建。
  • Goals and options:指定Maven构建过程中需要执行的目标(goals)和相关的选项(options)。一般就是clean package -DskipTests,清除 打包 跳过单元测试。

在这里插入图片描述

4.3 Post Steps

在构建流程的最后阶段执行一系列的操作。这些操作可以是清理工作区、部署应用到服务器、发送通知等。可以添加的步骤也是跟自由风格任务的Build Steps一样,只不过这里有三种触发条件可以选择。

  • Run only if build succeeds:仅在构建成功时运行。
  • Run only if build succeeds or is unstable:仅在构建成功或不稳定时运行。
  • Run regardless of build result:无论构建结果如何都运行,这将确保后置步骤在构建成功、失败或者被中止时都会执行。

在这里插入图片描述

五、流水线任务配置

4.1 流水线

流水线任务配置中最关键的就是pipeline脚本的编写,用于定义Jenkins流水线任务的Groovy脚本,它包含了构建、测试、部署等步骤的定义,以及如何执行这些步骤的详细说明。Pipeline Script中常用的几个部分组成:

  1. Pipeline Block:这是Pipeline Script的基础,所有的其他组件都应该包含在这个block中。它通常包括pipeline { ... }语法,并且是整个脚本的根节点。
  2. Agent:这部分指定了Pipeline Script将在哪台机器或容器中执行。它可以定义在Pipeline Block的顶层,也可以在Stage中重新定义。
  3. Stages:这是Pipeline Script的核心部分,它包含了多个阶段(Stage),每个阶段又包含了多个步骤(Step)。每个阶段可以有自己的Agent定义,这意味着不同的阶段可以在不同的环境中执行。
  4. Steps:每个阶段包含了一系列的步骤,这些步骤定义了在该阶段需要执行的具体操作,如获取代码、编译代码、运行测试、构建文档等。

在这里插入图片描述

4.2 流水线语法

jenkins可以根据相关的配置生成具体的流水线的执行语法,从而完成流水线任务的具体操作。例如:使用git拉取代码、使用maven进行代码构建等语法。流水线语法中用到最多的就是片段生成器,可以帮助你快速生成流水线脚本中的特定部分。下面是流水线语法的页面:
在这里插入图片描述

4.3 简单示例

假设现在有个项目的构建需要经历以下几步:拉取代码、构建两部分。现在看下如何使用流水线来完成这两部分流水线脚本的编写。这里我们先使用jenkins流水线自带的样式来生成一个大致的脚本轮廓,然后将具体的操作再填充到这个轮廓中。
在这里插入图片描述

  • 拉取代码
    (1)通过git从远程仓库去拉取代码。具体的语法可以使用jenkins自带的流水线语法去生成,点击流水线配置中的流水线语法。
    在这里插入图片描述
    (2)点击片段生成器,在示例步骤中选择git,然后输入git代码仓地址相关信息后,点击生成流水线脚本,就会生成对于的拉取git仓代码的流水线脚本,复制该生成的脚本到整个流水线的步骤中
    在这里插入图片描述

  • 构建
    这里使用在全局工具配置里面配好的Maven进行构建,直接使用shell 命令来执行mvn的构建命令:sh "mvn clean package -Dmaven.test.skip=true"

得到最终的流水线脚本如下:

pipeline {
    agent any

    stages {
        stage('拉取代码') {
            steps {
                git credentialsId: '0', url: 'https://gitee.com/njhsmile/web_demo_freestyle.git'
                echo '代码拉取成功'
            }
        }
        stage('构建') {
            steps {
                sh "mvn clean package -Dmaven.test.skip=true"
                echo '代码构建成功'
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1566820.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3+echarts:echarts地图打点显示的样式

colorStops是打点的颜色和呼吸灯、label为show是打点是否显示数据、rich里cnNum是自定义的过滤模板用来改写显示数据的样式 series: [{type: "effectScatter",coordinateSystem: "geo",rippleEffect: {brushType: "stroke",},showEffectOn: &quo…

Redis的值有5种数据结构,不同数据结构的使用场景是什么?

文章目录 字符串缓存计数共享Session限速 哈希缓存 列表消息队列文章列表栈队列有限集合 集合标签抽奖社交需求 有序集合排行榜系统 字符串 缓存 (1)使用原生字符类型缓存 优点:简单直观,每个属性都支持更新操作 缺点&#xff1…

大话设计模式之状态模式

状态模式是一种行为设计模式,它允许对象在其内部状态发生变化时改变其行为。在状态模式中,对象将其行为委托给当前状态对象,从而在不同的状态下执行不同的行为,而不必在对象自身的代码中包含大量的条件语句。 通常,状…

WE博客代码系统

WE博客代码系统 说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于asp.net mvc架构和sql server数据库,并采用EF实体模型开发。 三层架构并采用EF实体模型开发 功能模块: WE博客代码系统 WE博客代码系…

使用SpringBoot实现的登录注册后端功能

1、系统演示视频(演示视频) 2、需要交流和学习请联系

java网络编程——网络编程概述及UDP/TCP通信编程的实现

前言: 学习到通信了,整理下相关知识点。打好基础,daydayup!!! 网络编程 网络编程指可以让设备中的程序与网络上其他设备中的程序进行数据交互。 基本的通信架构 基本的通信架构有两种形式:CS架构(Client客户端/Server服…

2024年购买阿里云服务器多少钱?100元-5000元预算

2024年阿里云服务器租用费用,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元,ECS u1服务器2核4G5M固定带宽199元一年,2核4G4M带宽轻量服务器一年165元12个月,2核4G服务…

KV260 BOOT.BIN更新 ubuntu22.04 netplan修改IP

KV260 2022.2设置 BOOT.BIN升级 KV260开发板需要先更新BOOT.BIN到2022.2版本,命令如下: sudo xmutil bootfw_update -i “BOOT-k26-starter-kit-202305_2022.2.bin” 注意BOOT.BIN应包含全目录。下面是更新到2022.1 FW的示例,非更新到2022.…

数据质量决定大模型能力,景联文科技提供高质量大模型数据

随着大模型的深入发展,各类资源要素的配置状态已悄然变化。其中,数据的价值已被提升到一个新高度。 大模型往往拥有庞大的参数和复杂的网络结构,需要大量的数据来学习和优化。数据的质量和数量直接决定了模型的训练效果。若数据不足或质量不佳…

【Flutter】windows环境配置

windows 11 环境 官方教程 配置了flutter 环境变量在系统的path里 bin 路径。 死活没反应 关闭了git关闭了dart.exe关闭了vs还是不行卸载重新来 新版git flutter doctor 还需要android 环境

WPF动画教程(PointAnimationUsingPath的使用)

PointAnimationUsingPath的介绍 PointAnimationUsingPath 是 WPF 中的一个类,它用于创建一个动画,该动画会沿着指定的路径移动一个点。 关于 PointAnimationUsingPath这些属性比较重要: 属性类型说明PathGeometryPathGeometry这个属性定义了…

【Django学习笔记(四)】JavaScript 语言介绍

JavaScript 语言介绍 前言正文1、JavaScript 小案例2、代码位置2.1 在当前 HTML 文件中2.2 在其他 js 文件中 3、代码注释3.1 HTML的注释3.2 CSS的注释3.3 Javascript的注释 4、变量 & 输出4.1 字符串4.2 数组4.3 对象(python里的字典) 5、条件语句6、函数7、DOM7.1 根据 I…

【动态规划】【背包问题】基础背包

【动态规划】【01背包问题】 解法 二维dp数组01背包解法 一维dp数组(滚动数组)01背包 ---------------🎈🎈题目链接🎈🎈------------------- 解法 二维dp数组01背包 😒: 我的代码实现> …

RedCap轻量化5G提升生产效率,多领域应用

在工业数字化时代,工业智能化已经成为了各行各业的发展趋势。而在这个过程中,5G作为新一代网络通信技术正逐渐成为工业领域的核心力量。而在5G技术的应用中,RedCap轻量化5G工业网关路由器便是低成本畅享5G的最佳选择。 RedCap轻量化5G工业网…

可视化大屏的应用(18):网络安全和信息安全领域

可视化大屏在物联网领域具有以下价值: 实时监控和可视化: 可视化大屏可以将物联网设备和传感器的数据以图表、图形和动画等形式实时展示,帮助用户直观地了解物联网系统的运行状态和数据趋势。通过可视化大屏,用户可以快速发现异…

说说对排序算法的一些理解

对排序 - 冒泡排序的理解 冒泡排序是一种简单的排序算法,其基本思想是通过多次遍历数组,每次比较相邻的两个元素。如果前一个元素大于后一个元素,则交换它们的位置。这样,每一次遍历都会将当前未排序部分的最大元素“冒泡”到数组…

游戏引擎中的物理应用

一、 角色控制器 Character Controller和普通的动态对象(Dynamic Actor )是不同的,主要的三个特点是: 它拥有可控制的刚体间的交互假设它是有无穷的摩擦力(可以站停在位置上),没有弹性加速和刹车几乎立即…

图论(Graph theory)

抽象数据结构类型 Graphic操作接口 操作接口功能描述操作接口功能描述e()获取图的总边数n()顶点的总数exits(v,u)判断v,u两个顶点是否存在边insert(v) 在顶点集 V 中插入新顶点 v remove(v,u)删除从v 到u的 关联边 remove(v) 将顶点 v 从顶点集中删除 type(v,u)边所属的类型(…

蓝桥杯物联网竞赛_STM32L071_15_ADC/脉冲模块

ADC模块用的是RP1不用多说了,主要是脉冲模块,这个模块没考过 这个脉冲模块放出脉冲,主要能用TIM捕获到这个脉冲的高电平持续时间即可 CubMx配置: 脉冲模块的引脚与PB0相连,所以用PB0读取上升沿记的数和下降沿记的数&am…

【第十一届大唐杯全国大学生新一代信息通信技术大赛】赛题分析

赛道一 一等奖 7% 二等奖 15% 三等奖 25% 赛道二 参考文档: 《第十一届大唐杯全国大学生新一代信息通信技术大赛(产教融合5G创新应用设计)专项赛说明.pdf》 一等奖:7% 二等奖:10% 三等奖:20% 赛项一&am…