Jenkins--任务详解

一、任务类型

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 '代码构建成功'
            }
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

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

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

使用 Flume 将 CSV 数据导入 Kafka:实现实时数据流

使用 Flume 将 CSV 数据导入 Kafka:实现实时数据流 文介绍了如何使用 Apache Flume 将 CSV 格式的数据从本地文件系统导入到 Apache Kafka 中,以实现实时数据流处理。通过 Flume 的配置和操作步骤,我们可以轻松地将数据从 CSV 文件中读取并发…

Django複習總結

①Django是框架。那麼什麼是框架: 框架很像是一個骨架,帶有很多默認器官的骨架。我們可以根據需要改寫、複寫這些器官。 從而實現自己所需要的功能。 ②Django是MVC模型\MVT模型: MVC模型:M:models模型層 V&#…

wireshark解析grpc/protobuf的方法

1,wireshark需要安装3.20以上 下载地址:https://www.wireshark.org/ 2,如果版本不对,需要卸载,卸载方法: sudo rm -rf /Applications/Wireshark.app sudo rm -rf $HOME/.config/wireshark sudo rm -rf /…

【信号处理】基于变分自编码器(VAE)的脑电信号增强典型方法实现(tensorflow)

关于 在脑电信号分析处理任务中,数据不均衡是一个常见的问题。针对数据不均衡,传统方法有过采样和欠采样方法来应对,但是效果有限。本项目通过变分自编码器对脑电信号进行生成增强,提高增强样本的多样性,从而提高最终…

【Layui】------ layui实现table表格拖拽行、列位置的示例代码

一、完整的示例代码&#xff1a;&#xff08;请使用layui v2.8.3的版本&#xff09;看懂就能用、不要照搬、照搬会出错误、拷贝重要代码改改符合你自己的需求。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

Camtasia Studio2024汉化版下载(功能强大的屏幕录制和视频编辑软件)

Camtasia Studio 2024是一款功能强大的屏幕录制和视频编辑软件&#xff0c;由TechSmith公司开发。这款软件不仅能够帮助用户轻松地记录电脑屏幕上的任何操作&#xff0c;还可以将录制的视频进行专业的编辑和制作&#xff0c;最终输出高质量的视频教程、演示文稿、培训课程等。 …

如何在本地使用Ollama运行开源LLMs

本文将指导您下载并使用Ollama&#xff0c;在您的本地设备上与开源大型语言模型&#xff08;LLMs&#xff09;进行交互的强大工具。 与像ChatGPT这样的闭源模型不同&#xff0c;Ollama提供透明度和定制性&#xff0c;使其成为开发人员和爱好者的宝贵资源。 我们将探索如何下载…

【大数据存储】实验4 NoSQL数据库

实验4 NoSQL数据库 NoSQL数据库的安装和使用实验环境&#xff1a; Ubuntu 22.04.3 Jdk 1.8.0_341 Hadoop 3.2.3 Hbase 2.4.17 Redis 6.0.6 mongdb 6.0.12 mogosh 2.1.0 Redis 安装redis完成 新建终端启动redisredis-server新建一个终端redis-cli 建表操作 尝…

Vue项目中 安装及使用Sass(scss)

普通方法 一、安装使用scss 1. 安装 scss npm install scss --save2. 安装 node-sass 和 sass-loader sass-loader&#xff1a;把 sass编译成css node-sass&#xff1a;nodejs环境中将sass转css 提示&#xff1a;限制 node-sass&#xff0c;sass-loader 版本号&#xff0c;…

Jmeter02-1:参数化组件CVS

目录 1、Jmeter组件&#xff1a;参数化概述 1.1 是什么&#xff1f; 1.2 为什么&#xff1f; 1.3 怎么用&#xff1f; 2、Jmeter组件&#xff1a;参数化实现之CSV Data Set Config(重点中重点) 2.1 是什么&#xff1f; 2.2 为什么&#xff1f; 2.3 怎么用&#xff1f; …

高斯消元详解

算法概述 高斯消元法是一个用来求解线性方程组的算法 那么什么是线性方程组呢? 线性:每个未知数次数都为1次方程组:多个方程&#xff0c;多个未知数。 &#xff08;a1x1a2x2..anxnbn&#xff09;x为一次的 当x是平方的时候就不是线性 简而言之就是有多个未知数&#xff…

docker版Elasticsearch安装,ik分词器安装,用户名密码配置,kibana安装

1、安装es和ik分词器 创建映射目录并赋予权限&#xff1a; mkdir -p /docker_data/elasticsearch/conf mkdir -p /docker_data/elasticsearch/data mkdir -p /docker_data/elasticsearch/plugins chmod -R 777 /docker_data/elasticsearch编写配置文件&#xff1a; vi /dock…

水果销售(源码+文档)

水果销售管理系统&#xff08;小程序、ios、安卓都可部署&#xff09; 文件包含内容程序简要说明含有功能项目截图客户端添加地址首页商品详细意见反馈待发货商品分类我的代付款我的地址搜索防骗指南资料修改登录注册 后端管理分类管理反馈管理订单管理商品管理用户管理 文件包…

医疗器械5G智能制造工厂数字孪生可视化平台,推进行业数字化转型

医疗设备5G智能制造工厂数字孪生可视化平台&#xff0c;推进行业数字化转型。在数字化浪潮的推动下&#xff0c;医疗设备行业正迎来一场深刻的变革。5G技术的崛起&#xff0c;智能制造工厂的兴起&#xff0c;以及数字孪生可视化平台的出现&#xff0c;正在共同推动医疗设备行业…

C# WPF编程-命令

C# WPF编程-命令 概述WPF命令模型ICommand接口RoutedCommand类RoutedUICommand类命令库 概述 使用路由事件可以响应广泛的鼠标和键盘事件&#xff0c;这些事件是低级的元素。在实际应用程序中&#xff0c;功能被划分成一些高级的任务。这些任务可通过各种不同的动作和用户界面…

[StartingPoint][Tier0]Preignition

Task 1 Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (ii) dir busting, (iii) hash cracking. (目录暴力破解是一种用于检查 Web 服务器上的大…

文献速递:深度学习胰腺癌诊断--螺旋变换与模型驱动的多模态深度学习方案相结合,用于自动预测胰腺癌中TP53突变麦田医学

Title 题目 Combined Spiral Transformation and Model-Driven Multi-Modal Deep Learning Scheme for Automatic Prediction of TP53 Mutation in Pancreatic Cancer 螺旋变换与模型驱动的多模态深度学习方案相结合&#xff0c;用于自动预测胰腺癌中TP53突变 01 文献速递介…

计算机视觉——图像金字塔理解与代码示例

图像金字塔 有时为了在图像中检测一个物体&#xff08;例如人脸、汽车或其他类似的物体&#xff09;&#xff0c;需要调整图像的大小或对图像进行子采样&#xff0c;并进行进一步的分析。在这种情况下&#xff0c;会保持一组具有不同分辨率的同一图像。称这种集合为图像金字塔…

【数据分析实战】印尼雅加达咖啡市场分析:品牌排名与市场趋势解读

目录 背景介绍数据展示数据分析可视化1. 各市咖啡店占比&#xff1a;1.1 可视化代码1.2 可视化结果1.3 浅薄解读 2. 品牌市场份额排名&#xff1a;2.1 可视化结果1.2 浅薄解读 3. 品牌消费者满意指数&#xff1a;3.1 可视化代码3.2 可视化结果3.3 浅薄解读 写在最后 背景介绍 …