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 anystages {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.rhkb.cn/news/296211.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JMM内存模型 volatile关键字解析

前言 对于多线程等等的各种操作,相比各位都了然于胸,现在我们来介绍一下更底层一点点的JMM内存模型,其实也是一个很简单的理想的内存模型 注意与JVM的内存模型区分 多线程内存模型主要是基于CPU缓存搭建起来的 这里就区分工作内存和主内存了 我们线程操作的其实是主内存的一个副…

构建第一个JS应用(FA模型)

创建JS工程 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发(本文以应用开发为例,Atomic Service对…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之一 简单视频放大抖动效果 一、简单介绍 二、简单视频放大抖动效果实现原理 三、简单视频放大…

R语言数据挖掘:随机森林(1)

数据集heart_learning.csv与heart_test.csv是关于心脏病的数据集,heart_learning.csv是训练数据集,heart_test.csv是测试数据集。要求:target和target2为因变量,其他诸变量为自变量。用决策树模型对target和target2做预测&#xf…

OpenHarmony实战开发-多设备自适应能力

介绍 本示例是《一次开发,多端部署》的配套示例代码,展示了页面开发的一多能力,包括自适应布局、响应式布局、典型布局场景以及资源文件使用。 说明: 自适应布局能力仅可以保证在外部容器大小在一定范围内变化时,容…

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

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

【协议篇:Http与Https】

1. Http 1.1 Http的定义 超文本传输协议(Hypertext Transfer Protocol,HTTP)是用于分布式、协作式和超媒体信息系统的应用层协议。它是互联网上最广泛应用的数据通信协议之一,尤其对于万维网(WWW)服务而言…

构建第一个ArkTS应用(FA模型)

创建ArkTS工程 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发(本文以应用开发为例,Atomic Servi…

推理端框架简介 高通SNPE 神经网络处理引擎 阿里巴巴 MNN 腾讯 FeatherCNN 端侧推理引擎 卷积计算优化 卷积计算优化

高性能计算(High performance computing, 缩写HPC) 指通常使用很多处理器(作为单个机器的一部分) 或者某一集群中组织的几台计算机(作为单个计 算资源操作)的计算系统和环境。 有许多类型的HPC 系统,其范围从标准计算机的大型集群,到高度专用的硬件。 大多数基于集群的H…

网站如何运用百度文心一言API进行AI内容创作?

网站如何运用百度文心一言API进行AI内容创作? 当我们做好一个网站的时候会因为创作内容而发愁,随着chatgpt的出现,内容创作已经不再是什么困难的事情,但是由于gpt是国外的,在国内使用有诸多不便,因此我们今…

【flutter封装图片/视频选择控件】

引入库 wechat_assets_picker: ^6.0.5 、video_player: ^2.5.1 # 视频播放、 flutter_screenutil: ^5.7.0 import dart:async; import dart:io; import package:generated/l10n.dart; import package:jade/configs/PathConfig.dart; import package:jade/customWidget/addImag…

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

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

React + 项目(从基础到实战) -- 第三期

react内置hooks useState 如何让页面动起来(实时更新) import React,{FC,useState} from "react";const Demo:FC()>{let count0; //普通js变量无法触发组件更新function add(){count;console.log("count: ",count);}return <div><button onCl…

远程登录服务器(ubuntu20.04)在自己账号下的虚拟环境(python3.6)安装Jupyter并连接pycharm使用

参考&#xff1a;Jupyter notebook/lab安装及远程访问 1、安装jupyter pip install notebook遇到的问题&#xff1a; &#xff08;1&#xff09;运行这个指令之前尝试了好多方法都安不上 此前还尝试了更新pip之类的&#xff0c;大家安不上也可以先更新pip试试。 &#xff0…

JavaScript简介

目录 概要&#xff1a; 说明&#xff1a; 学习JS的原因&#xff1a; JS可以干什么&#xff1a; 了解JavaScript&#xff1a; 前言&#xff1a; JavaScript的历史&#xff1a; JavaScript与ECMAScript&#xff1a; 如何运行JavaScript以及JavaScrip的特点&#xff1a; …

基于Python的微博旅游情感分析、微博舆论可视化系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

HTML - 你知道b与strong标签的区别吗

难度级别&#xff1a;初级及以上 提问概率&#xff1a;50% 不单单是初学者&#xff0c;即便是有好几年工作经验的前端开发工作者&#xff0c;也会有一大部分人把这两个标签搞混&#xff0c;甚至在工作中&#xff0c;很大一部人不会使用这两个标…

玩转Django分页器

一、Pagination 分页器编程步骤 View, 导入django.core.paginator.Paginator类&#xff0c;创建Paginator 对象时&#xff0c;输入qs对象&#xff0c;以及每页显示条数。 接收 URL, 从请求参数中读取page数值 &#xff0c;通过 paginator.page(page_num) 返回请求页的page_obj…

电商好评语整理与优化:让繁琐工作变得轻松高效

在电子商务领域&#xff0c;客户的好评是店铺信誉和产品质量的重要体现。然而&#xff0c;整理和优化这些好评语却是一项既繁琐又需要细致耐心的工作。本文将探讨如何高效地进行电商好评语的筛选、分类和优化&#xff0c;让这一工作变得更加轻松和高效。 一、明确整理目的 在开…

环保用电监测系统诞生与作用

随着全球能源危机的加剧和环境保护意识的提高&#xff0c;环保用电监测系统应运而生。这一系统以其独特的监测能力、数据分析和节能减排功能&#xff0c;在提高用电效率和促进环境可持续发展方面发挥着重要作用。本文将从环保用电监测系统的诞生背景、主要功能、作用以及在实际…