Jenkins Pipeline应用实践

news2024/11/24 20:41:00

Jenkins Pipeline是一种可编程的、可扩展的持续交付管道,允许您使用脚本来定义整个软件交付过程。

以下是使用Jenkins Pipeline创建和配置流水线的基本步骤。

Part 01. 创建一个Pipeline Job

在Jenkins中创建一个新的"Pipeline"类型的Job。

图片

以下是在Jenkins中创建一个Pipeline Job的详细步骤:

1.登录到Jenkins系统并转到主页。

2.单击“New Item”菜单,选择“Pipeline”选项并指定Job名称。

图片

3.在新建的Job页面中,在“Pipeline”部分中找到“Definition”选项,选择“Pipeline script”。

图片

4.编辑Pipeline脚本:在“Script”区域输入要使用的Pipeline脚本。您可以手动编写脚本,也可以使用外部存储库或特定的DSL语言编写脚本。

5.配置Pipeline参数(可选):您可以通过单击“Add Parameter”按钮来添加参数,例如字符串、布尔值、文件等。这些参数可以在构建过程中使用,并且利于您编写更灵活的Pipeline脚本。

6.指定“Agent”:在Pipeline脚本中,您需要定义在哪个节点上运行该Pipeline。

您可以使用默认的“Any”节点,也可以使用其他节点,如特定操作系统、Docker容器、云平台等。在Pipeline Job设置页面的“Pipeline”部分中,可以为每个阶段指定不同的代理。

7.保存和运行:单击“Save”按钮以保存Pipeline Job。您可以点击 “Build Now”按钮开始立即构建,或者在后续的Jenkins Job 页面中运行Pipeline Job。

总之,创建Pipeline Job需要编辑Pipeline脚本、指定代理节点、配置参数等。

通过Jenkins Pipeline,您可以轻松创建可扩展、灵活和可重复的软件交付流水线,并以可视化方式实时跟踪整个过程。

Part 02. 编写Pipeline脚本

在Pipeline Job中,选择“Pipeline script”选项卡,并输入Pipeline脚本,该脚本描述了整个软件交付过程。

图片

在 Jenkins Pipeline 中编写 Pipeline 脚本需要完成以下几个步骤:

1.定义 Pipeline 块:Pipeline 块是 Pipeline 脚本的根节点,定义了整个软件交付过程。

例如:pipeline { agent any stages { } }。

2.定义 Agent 块:Agent 块定义了 Pipeline 运行的代理节点。可以使用默认的 “any” 节点或者指定特定节点、操作系统、Docker 容器等。

例如:pipeline { agent { docker { image ‘maven:3-alpine’ args ‘-v /root/.m2:/root/.m2’ } } stages { } }。

3.定义 Stage 块:Stage 块表示 Pipeline 的阶段,每个阶段表示软件交付过程中的一个特定部分。在 Stage 块中可以定义一系列 Step 块。

例如:pipeline { stages { stage(‘Build’) { steps { } } stage(‘Test’) { steps { } } stage(‘Deploy’) { steps { } } } }。

4.定义 Step 块:Step 块表示 Pipeline 中的操作步骤,每个步骤执行一个特定的任务。例如,从代码库中拉取代码、编译代码、运行单元测试、打包应用程序等。可以使用 shell 命令、调用外部脚本等方式来执行具体操作。

例如:pipeline { stages { stage(‘Build’) { steps { sh ‘mvn clean package’ } } stage(‘Test’) { steps { sh ‘mvn test’ } } stage(‘Deploy’) { steps { } } } }。

5.添加变量和条件:Pipeline 脚本还支持添加变量、条件语句等高级功能,以实现更灵活的控制流程。例如,可以定义环境变量、判断分支等。

在编写 Pipeline 脚本时,需要注意以下几点:

1.Pipeline 脚本是基于 Groovy 编写的脚本语言,因此需要了解 Groovy 的语法和特性。

2.Pipeline 脚本应该具有良好的可读性和可维护性,可以使用注释、格式化等方式来提高代码质量。

3.Pipeline 脚本应该尽量避免复杂逻辑和过长的代码块,在必要时可以将代码拆分为多个函数或者引用外部库。

总之,编写 Pipeline 脚本是创建可重复、可读性强、易于管理的软件交付流水线的关键步骤,需要认真设计和测试,以确保软件交付过程的质量和效率。

Part 03. 定义Stage

Pipeline是由多个阶段(Stages)组成的,每个阶段表示软件交付过程中的一个特定部分。例如,构建代码、运行测试、部署到服务器等。

在Pipeline脚本中,可以通过编写stage块来定义这些阶段。

图片

1.在 Pipeline 脚本中,通过编写 stage 块来定义每个阶段。每个 stage 块可以包含一个或多个步骤(Steps),用于执行特定的任务。

例如,在构建代码阶段,需要执行编译、静态检查等操作;在测试阶段,需要运行单元测试、集成测试等。在 Pipeline 脚本中,可以使用 stage 块对这些任务进行组织和管理。

2.stage 块的语法如下:

stage('Stage Name') {
    steps {
        // Steps to be executed in this stage
    }
}

其中,‘Stage Name’ 是该阶段的名称,可以任意指定。steps 块中包含了一系列要执行的任务步骤,可以使用 shell 命令、调用外部脚本等方式来执行具体操作。

3.例如,在以下 Pipeline 脚本中,定义了三个阶段:‘Build’、‘Test’ 和 ‘Deploy’,分别表示编译代码、运行测试和部署应用程序:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'mvn clean package'
            }
        }
        stage('Test') {
            steps {
                sh 'mvn test'
            }
        }
        stage('Deploy') {
            steps {
                sh 'deploy.sh'
            }
        }
    }
}

在这个例子中,每个阶段都包含了一个 steps 块,用于执行相应的任务。

例如,在 ‘Build’ 阶段中,执行了 ‘mvn clean package’ 命令来编译代码和打包应用程序;在 ‘Test’ 阶段中,执行了 ‘mvn test’ 命令来运行单元测试和集成测试;在 ‘Deploy’ 阶段中,执行了一个名为 ‘deploy.sh’ 的外部脚本用于部署应用程序。

4.通过定义多个 stage 块,可以将软件交付过程分解为多个阶段,并对每个阶段进行精细化管理和控制。同时,在 Jenkins UI 中也可以清晰地看到每个阶段的执行情况和状态,便于用户查看和排查问题。

Part 04. 配置Agent

在Pipeline脚本中,可以通过编写agent块来定义要在哪个节点上执行该Pipeline。例如,在一个具有Docker容器的代理节点上执行Pipeline。

通过以下示例配置Agent:

agent {
  docker {
    image 'dockerimage'
    args '--name myname'
  }
}

这里,agent代表Jenkins代理,而docker代表这个代理中启动的容器,image代表要使用的docker镜像,args代表创建容器实例时所使用的参数(如-指定容器的名称)。

编写完成后,我们就可以在这个节点上运行这个Pipeline了。

Part 05. 添加Step

在每个Stage中,需要定义一系列步骤(Steps),每个步骤执行一个特定的任务。

例如,从代码库中拉取代码、编译代码、运行单元测试、打包应用程序等。在Pipeline脚本中,可以通过编写step块来定义这些步骤。

Step块定义步骤,语法如下:step {引用名称}: {插件类型}:{插件动作}。其中,引用名称是可选的,用于在步骤中引用此步骤的ID。

插件类型定义步骤使用的Jenkins插件,而插件动作定义步骤要执行的操作。

示例:step(‘build’) { sh ‘mvn clean package’ } 上述示例定义了一个名为“build”的步骤,用于清理和打包Maven项目。

图片

Part 06. 运行Pipeline

保存Pipeline Job并开始构建,Jenkins会按照Pipeline脚本中定义的步骤和阶段顺序执行软件交付过程。

图片

1.打开Jenkins控制台,在主UI的“新建项目”下,选择“构建一个自由格式的Pipeline”。

2.输入项目名称和描述,点击“保存”按钮。

3.选择“管道脚本从SCM”,显示SCM配置页面,添加脚本提取源,如Github等,以便Jenkins能够获取Pipeline脚本。

图片

4.选择Pipeline语言,用于编写脚本。几种常用的Pipeline语言是Groovy、Python和Shell。

5.测试脚本,通过系统输出或日志追踪调试Pipeline脚本,检查它的行为是否与预期相符合。

6.完成Pipeline脚本的编写,保存Pipeline Job,点击“Build Now”按钮,开始构建。

图片

7.Jenkins会列出每个步骤和工作,并在控制台中显示输出。此外,用户可以在控制台日志中搜索字符串,检查步骤是否成功执行,如果失败,用户可以编辑脚本并重新构建,以纠正失败的节点。

8.构建完成后,可以检查构建状态以查看每个步骤的成功和失败。检查步骤输出可以确保Pipeline Job可以被正确的执行。

Part 08.查看Pipeline输出

在Jenkins UI中,您可以查看Pipeine Job的构建历史记录和每个构建的输出日志。

这些输出包括每个阶段和步骤的状态、持续时间、错误信息等等。

您还可以使用CLI来查看Pipeine的输出日志,使用以下命令:

列出所有构建:jb jobs -w
显示构建详情:jb job# -b
您也可以使用REST API获取构建详细信息:GET /job///api/json
您使用此API可以获得每个阶段和步骤的构建日志以及它们的状态信息。

另外,您还可以使用Jenkins UI上的Blue Ocean功能,允许您查看每个阶段及其产生的输出和可视化报告。

图片

总之,使用Jenkins Pipeline,您可以编写可重复、可读性强、易于管理的软件交付流水线,并以可视化的方式跟踪整个流程,从而提高交付质量和效率。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

【STM32F103】HC-SR04超声波测距模块详解(附工程文件)

前言: 使用的硬件:STM32F103C8T6,HC-SR04,ST-Link(其他烧录器也可以),0.96寸OLED屏幕(非必须,仅供显示测距结果,可以使用串口助手代替)&#xff…

rabbitMQ对消息不可达处理-备份交换机/备份队列

生产者发送消息,在消息不可达指定队列时,可以借助扇出类型交换机(之前写过消息回退的处理方案,扇出交换机处理的方案优先级高于消息回退)处理不可达消息,然后放置一个备份队列,供消费者处理不可…

Pytorch中的gather的理解和用法

Pytorch中的gather的理解和用法 这个Gather的用法花费了点时间,我相信很多人一开始不太懂。 跟着我简单理解。 首先样例是: tensor([[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])然后index: [[2, 1, 0]]然后执行的代码: tensor_0.gather(0…

使用 SIEM 管理安全事件

每家公司都必须处理检测、管理和解决安全事件,未能制定事件响应计划可能会对任何组织产生重大的影响,无论是在财务损失还是声誉损害方面。本文探讨了事件响应的重要性、检测和管理事件的关键要素,以及帮助组织处理安全事件的最佳实践。 安全…

FLASK博客系列6——数据库之谜

我们上一篇已经实现了简易博客界面,你还记得我们的博客数据是自己手动写的吗?但实际应用中,我们是不可能这样做的。大部分程序都需要保存数据,所以不可避免要使用数据库。我们这里为了简单方便快捷,使用了超级经典的SQ…

如何使用内网穿透将Tomcat网页发布到公共互联网上【内网穿透】

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个轻量级的服务器,不仅名字很有趣&#xff0…

Redis面试题:分布式锁相关问题

目录 面试官:Redis的内存用完了会发生什么? 面试官:Redis分布式锁如何实现 ? 面试官:好的,那你如何控制Redis实现分布式锁有效时长呢? 面试官:好的,redisson实现的分布式锁是可重…

现货黄金走势图下载与保存

MetaTrader 4 (MT4) 是一款在全球范围内广受欢迎的现货黄金交易软件,简单性和灵活性是其深受市场欢迎的原因。它的显示界面的主要部分由品种的走势图表组成,投资者可以在其中查看实时的行情走势。屏幕左上角是市场观察窗口,当中列出了平台所有…

群晖NAS:docker(Container Manager)、npm安装Verdaccio并常见命令集合

群晖NAS:docker(Container Manager)、npm安装Verdaccio并常见命令集合 自建 npm 资源库,使用Verdaccio。如果觉得麻烦,直接可以在外网注册 https://www.npmjs.com/ 网站。大同小异,自己搭建搭建方便局域网…

如何进行有效的移动应用测试?

1、识别关键功能: 对于移动应用测试,首先要了解应用的需求和功能规格,确定哪些功能是最关键的。 关键功能通常是用户最常用的功能,对应用的成功和用户体验至关重要。 2、设定测试目标和用例: 针对每个关键功能,设置具体的测试目…

基于springboot+maven的个人理财管理系统

基于springbootmaven的个人理财管理系统,演示地址:个人理财系统登录界面 用户名:admin,密码:123456 共分为用户信息管理(用户信息,银行卡,个人征信),理财产品管理(零钱理财,工资理财,期限理财&#xff0c…

如何在本地安装部署WinSCP,并实现公网远程本地服务器

可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器 文章目录 可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器1. 简介2. 软件下载安装:3. SSH链接服务器4. WinSCP使用公网TCP地址链接本地服务器5. WinSCP使用固定公网TCP地址访问服务器 1. 简介 …

有效实施的五条教学策略

作为老师,是否曾为如何提高教学质量而苦恼?也为如何引导学生而思考?如果你正面临这些困扰,那么这篇文章将对你有帮助。为你介绍五条教学策略,帮你实施教学,提高效果。 明确教学目标 你是否知道你的教学目标…

3D数字孪生场景编辑器

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 数字孪生的强大功能来自于将真实世界的资产与真实世界的数据联系起来,因此您可以…

代码块01-Java

代码块01 一、介绍二、语法三、好处举例 四、使用细节五、练习题1题2 一、介绍 代码块又称为初始化块,属于类中的成员[即是类的一部分],类似于方法,将逻辑语句封装在方法体中,通过包围起来。 但和方法不同,没有方法名…

ZKP15.1 Secure ZK Circuits via Formal Methods

ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 15: Secure ZK Circuits via Formal Methods (Guest Lecturer: Yu Feng (UCSB & Veridise)) Motivation Bugs in blockchain software are extremely dangers and costly.Smart Contract Bugs, Blockchain Protocol Bugs,…

OSError: symbolic link privilege not held报错解决

本人情况介绍 本人在复现某个代码的时候,需要安装开源代码已经封装好的setup.py代码。具体安装的库具体如下。 fairseqpython3.6.0pytorch1.6.0File2ROUGE 在安装fairseq的时候遇见了如下问题。 Installing build dependencies … done Getting requirements to …

使用 Redis Zset 有序集合实现排行榜功能(SpringBoot环境)

目录 一、前言二、Redis Zset 的基本操作三、通过Redis 命令模拟排行榜功能3.1、排行榜生成3.2、排行榜查询 四、SpringBoot 使用 Redis Zset 有序集合实现排行榜功能 一、前言 排行榜功能是非常常见的需求,例如商品售卖排行榜单、游戏中的积分排行榜、配送员完单排…

原创文章生成器-批量原文高质量伪原创

在信息爆炸的时代,创作者们面临的挑战愈发严峻。写一篇原创文章,不仅需要脑洞大开,还得担心自己的文字是否能够迎合读者口味。原创文章生成器只需输入标题或关键词,即可轻松生成原创文章。而与此同时,147SEO改写软件也…

FLASK博客系列8——我也有后台管理

上次我们学习了如何往数据库里插入数据,显示我们自己的文章。 有些朋友可能会问,django有后台管理,插入不用这么麻烦,那flask有类似的吗?当然有,而且还挺多的。今天我们就用一个最常用的包来完成 flask-adm…