【Jenkins】pipeline基本使用

目录

一、pipeline

二、创建pipeline项目

1、安装pipeline插件

2、创建pipeline项目

三、pipeline语法

1、pipeline组成

2、agent:指定流水线的执行位置,流水线中每个阶段都必须在某个地方执行

3、stage:阶段,代表流水线的阶段,每个阶段都必须要有名称,且各个名称不能重名

4、stages:stage的集合,stages部分至少包含一个stage

5、steps:代表stage阶段中的一个或者多个步骤,steps部分至少包含一个步骤

2、pipeline其他指令

1、post:包含的是在整个pipeline或stage完成后的附加步骤

2、environment:用于设置环境变量,可定义在stage或pipeline部分,环境变量可以设置为全局的,也可以设置为阶段级别(stage)的

3、tools:可定义在pipeline或stage部分,配置我们指定的工具,并将其加入到PATH变量中(工具名称必须在Jenkins的全局工具配置中存在)

4、options:用于配置Jenkins pipeline本身的选项,options指令可以定义在stage或pipeline部分

5、parameters:在构建前定义参数化构建,支持booleanParam, choice, credentials, fifile, text,password, string等参数类型

6、triggers:定义执行pipeline的触发器


一、pipeline

用户可以在一个 Jenkinsfile 中快速实现一个项目的从构建、测试以及到发布的完整流程,灵活方便地实现持续交付,并且可以保存和管理这个Jenkinsfile的定义。

从Jenkins V2.0版本开始,Pipeline是Jenkins2.X的最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变。

【自由风格任务】对比【流水线】

Freestyle Jobs Pipeline
通过UI页面配置通过代码配置(groovy开发的,基于java的脚本语言)
配置变化不能追溯可以通过SCM(代码版本管理)追溯
迁移需要重新创建任务方便任务配置迁移
每个任务对应每个阶段(构建、测试、发布)单个任务中完成所有阶段的编排

二、创建pipeline项目

1、安装pipeline插件
2、创建pipeline项目

三、pipeline语法

Jenkins Pipeline通常会写入到一个文本文件中(称为Jenkinsfile),该文件可以通过SCM(代码版本管理)系统管理(比如从Git上拉取脚本)

  • 脚本式(Scripted Pipeline)—— 比如一些if判断等逻辑,脚本式里面不能包含声明式

  • 声明式(Declarative Pipeline)—— 一般用这个比较多,官方也比较推荐,声明式里面可以包含脚本式,更简单更加结构化的语法,官网推荐使用

1、pipeline组成

基本结构:以下每一部分都是必须的,少一个Jenkins都会报错

pipeline {
    agent any  //表示在哪个节点运行:任意

    stages {
        stage('Hello') {   //名字各不相同
            steps {
                echo 'Hello World'  //具体要做的事情
            }
        }
        
        stage('Hello1') {
            steps {
                echo 'Hello World1'
            }
        }
    }
}

1、pipeline:代表整条流水线,包含整条流水线的逻辑

2、agent:指定流水线的执行位置,流水线中每个阶段都必须在某个地方执行
  • none : 当在pipeline块的顶层使用none时,将不会为整个Pipeline运行分配全局agent ,每个stage部分将需要包含其自己的agent部分

  • any : 在任何可用的agent 上执行Pipeline或stage

  • label : 指定具体的 Jenkins Slave Node,也可以单独指定Stage的执行环境

3、stage:阶段,代表流水线的阶段,每个阶段都必须要有名称,且各个名称不能重名
4、stages:stage的集合,stages部分至少包含一个stage
5、steps:代表stage阶段中的一个或者多个步骤,steps部分至少包含一个步骤

2、pipeline其他指令

1、post:包含的是在整个pipeline或stage完成后的附加步骤
  • always:无论pipeiline运行的完成状态如何都会执行这段代码

  • changes:只有当前pipeline运行的完成状态与先前完成的pipeline的状态不同时,才会执行

  • failure:当前完成状态为失败时执行

  • success:当前完成状态为成功时执行

  • unstable:当前完成状态为不稳定时执行(测试失败/代码违规问题)

  • aborted:当流水线被手动终止时

post{
  always { 
    echo 'will always execute' 
        } 
}
2、environment:用于设置环境变量,可定义在stage或pipeline部分,环境变量可以设置为全局的,也可以设置为阶段级别(stage)的
environment { aaa = 'bbb' }//定义环境变量 

${env.JOB_NAME} //访问Jenkins内置变量 

${env.aaa} //访问自定义变量
3、tools:可定义在pipeline或stage部分,配置我们指定的工具,并将其加入到PATH变量中(工具名称必须在Jenkins的全局工具配置中存在)
tools { maven 'maven3.6.1'}
4、options:用于配置Jenkins pipeline本身的选项,options指令可以定义在stage或pipeline部分
options{ 
	buildDiscarder(logRotator(numToKeepStr:'3')) //保存最近历史构建记录的数量 
	timeout(time:1,unit:'HOURS')//job执行的超时时间 
	disableConcurrentBuilds()//禁止job同时执行 
	retry(3)//失败重试次数 
	}
5、parameters:在构建前定义参数化构建,支持booleanParam, choice, credentials, fifile, text,password, string等参数类型
parameters{ 
  choice(name:'environ',choices:'test\ndev\nstg', description:'请选择测试环境 dev? test? stg?')
  string(name:'version',defaultValue:'0.0.0',description:'当前构建版本号') 
}
  
${params.environ}//通过 params访问对应参数
6、triggers:定义执行pipeline的触发器
triggers { 
    cron('0 19 * * 1-5') 
    pollSCM('0 */2 * * 1-5') 
}

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

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

相关文章

2024 高级前端面试题之 框架通识 「精选篇」

该内容主要整理关于 框架通识 的相关面试题,其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。 框架通识精选篇 1. MVVM2. 路由原理3. Virtual Dom3.1 为什么需要 Virtual Dom3.2 Virtual Dom 算法简述3.2 Virtual Dom 算法实现 4. Diff算法4.1 React-Di…

【MySQL】学习如何使用DCL进行用户管理

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-JwFD16F1Kh0fle0X {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

五、医学影像云平台 - 医共体

原创不易,多谢关注!谢谢! 1. 医学大影像设备市场现状 目前影像设备,可以说低端产品同质化越来越严重,利润越来越薄,而高端超高端设备,整体销售额却在增长,利润空间也比低端的要高的…

行业应用科普 | 患者护理应用连接器

【摘要/前言】 通过医疗专业人士为患者提供护理的种种需求,已经不限于手术室与医院的各种安全状况。当今许多患者的护理都是在其他环境进行,例如医生办公室、健康中心,还有越来越普遍的住家。尤其是需要长期看护的患者,所需的科技…

PCB经验规则的综合应用

PCB经验规则的综合应用 走线尽量短,长度小于信号波长的十分之一 二是无法短的,就控制它的阻抗 按传输线设计、控制阻抗 首先我们来看看电路板的参数。常见的1.6毫米电路板 1oz 铜箔,介质 FR4,介电常数4.6-4.8,板芯厚…

编译原理与技术(三)——语法分析(四)自底向上-移进归约

一、语法分析的主要方法 二、归约 三、句柄(可归约串) 归约涉及到一个问题。 对于输入串,我们怎么知道哪一部分可以被归约? 我们定义,可以被归约的子串称为句柄。 显然,句柄可能不是唯一的。 四、移进-…

CTF-show WEB入门--web17

今日完成web12,老规矩先看看题目提示: 我们可以看到题目提示为: 备份的sql文件会泄露敏感信息 然后我们再打开题目链接; 然后我们查看页面内容和网页源代码,什么有用的信息都没有得到: 根据题目提示为敏感信息泄露,那…

解析与模拟常用字符串函数strcpy,strcat,strcmp,strstr(一)

今天也是去学习了一波字符串函数,想着也为了加深记忆,所以写一下这篇博客。既帮助了我也帮助了想学习字符串函数的各位。下面就开始今天的字符串函数的学习吧。 目录 strcpy与strncpy strcat与strncat strcmpy strstr strcpy与strncpy 在 C 语言中&…

机器学习系列6-逻辑回归

重点: 1.逻辑回归模型会生成概率。 2. 对数损失是逻辑回归的损失函数。 3. 逻辑回归被许多从业者广泛使用。 # 1.逻辑回归:计算概率 **许多问题需要将概率估算值作为输出。逻辑回归是一种非常高的概率计算机制。** 实际上,您可以通过以下两种…

Fart12配套批量修复二代函数抽取壳工具发布

旧版Fart12定制版jadx的弊端 之前寒冰大佬推出的Fart12定制版jadx可以将Fart12脱下来的dex文件与主动调用过程中拿到的函数体bin文件自动重构与合并,修复并合并成新的dex。 修复完之后dex文件大小也会变大,且函数体也由原来的nop变成了真正的函数逻辑代…

算法练习-二叉搜索树的最小绝对差(思路+流程图+代码)

难度参考 难度:中等 分类:二叉树 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。且所在课程未提供测试平台,故实现代码主要为自行测试的那种,以下内容均为个人笔记,旨…

代码随想录 Leetcode37. 解数独

题目&#xff1a; 代码(首刷看解析 2024年2月6日&#xff09;&#xff1a; class Solution { private:bool backtracking(vector<vector<char>>& board) {for (int i 0; i < 9; i) {for (int j 0; j < 9; j) {if (board[i][j] .) {for (char k 1; k…

“掌握温度,感知湿度,一触即知!”DHT11温湿度传感器,为您的生活增添一份关怀与精准。#非标协议【下】

“掌握温度&#xff0c;感知湿度&#xff0c;一触即知&#xff01;”DHT11温湿度传感器&#xff0c;为您的生活增添一份关怀与精准。#非标协议【下】 前言预备知识1.DHT11温湿度传感器初识1.1产品概述1.2与51单片机接线1.3数据传送逻辑和数据格式 2.发送时序检测DHT11温湿度传感…

Linux基础-磁盘

1.磁盘分区 1.分区有固定大小 2.直接写在这块盘的磁盘分区表中&#xff08;DPT&#xff09;&#xff0c;和上面装什么操作系统没有任何关系 2.每一个磁盘分区都要先有一个磁盘分区类型 GPT&#xff08;首选&#xff09; MBR 3.磁盘专业术语叫做块设备&#xff08;Block Dev…

numpy基础之切片索引

1 numpy基础之切片索引 多维数组有多个轴&#xff0c;索引下标从0轴开始&#xff0c;每个轴下标用逗号分隔。 比如[m,n,o]&#xff0c;表示0轴上索引为m&#xff0c;1轴上索引为n&#xff0c;2轴上索引为o的下标。 切片索引下标是在指定轴上用冒号选取一定范围的下标。 比如…

mac缩小图片大小的软件有哪些?推荐6款实用软件

mac缩小图片大小的软件有哪些&#xff1f;在处理图片时&#xff0c;我们经常需要调整图片的大小以适应不同的需求。在Mac上&#xff0c;有许多软件可以帮助我们实现这一目标。本文将介绍6款知名的图片缩小软件&#xff0c;让你轻松应对图片大小的调整。 1.改图鸭 这是一款功能…

亿级流量高并发春晚互动前端技术揭秘

前言 2022年1月&#xff0c;京东成为央视总台2022年春节联欢晚会独家互动合作伙伴&#xff0c;双方在红包互动、电商等方面展开全方位深度合作。在除夕当天产生691亿次互动&#xff0c;送出15亿元红包好物。 如何在这种大规模、高并发的场景下&#xff0c;确保系统的稳定性和…

这是一篇学习记录(二) —— RPA应用

RPA可以做数据提取、表单填写和文件移动。RPA 可以在不相关的软件系统中自动执行各种活动和事务&#xff0c;从而释放人力资源&#xff0c;使其优先处理更复杂的任务。 以下是 RPA 在不同领域的典型应用&#xff1a; 金融和银行业&#xff1a;RPA 在金融和会计领域有广泛应用…

Linux实验记录:使用Postfix与Dovecot部署邮件系统

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; Web服务和FTP文件传输服务虽能实现文…

Stable Diffusion 模型下载:majicMIX reverie 麦橘梦幻

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 非常推荐的一个梦幻风格的大模型&#xff0c;由国人“Merjic”发布&#xff0c;下载量颇高。基于majicMIX_lux合并了一个2.5D模型。它与majicMIX_fantasy有类似的方…