Jenkins实践指南--pipeline概述

news2024/11/18 1:31:40

1.pipeline概述

1.1 什么是pipeline

从某种抽象层次上讲,部署流水线(Deployment pipeline)是指从软件版本控制库到用户手中这一过程的自动化表现形式。——《持续交付-发布可靠软件的系统方法》

pipeline 英语愿意为管道,在Jenkins里面可以理解为,是一套工作流框架,它将原本各个彼此独立的任务连接起来,实现一些比较复杂的工作流程,整个运行流程看起来就像是一个管道一样。

Jenkins 2.x可以支持pipeline as code,即通过代码来描述部署流水线。使用代码而不是UI的意义在于:

更好地版本化:将pipeline提交到版本管理库中,可以更好的进行版本管理

更好地协作:pipeline的每次修改对所有人均是可见的,也可对pipeline进行代码审查

更好的复用性:手动操作配置没有办法比较难直接复用,而代码则可以

更直观的工作流程:通过pipeline可以更加直观看到当前整个工作流所涉及到的各个环节等信息

1.2 pipeline 语法选择

Jenkins 团队在一开始实现Jenkins pipeline时,Groovy被选为基础来实现,因此在写pipeline时,很像是在写Groovy代码,从而有很大的灵活性和可扩展性。因此pipeline也被分成两种格式的语法:脚本式语法(Scripted)和声明式语法(Declarative)

脚本式语法

node {
    stage("Build") {
        println "构建应用"
    }
    stage("Test") {
       println "测试应用"
    }
    stage("Deploy"){
        try{
            println "部署应用"
        }
        catch(err){
          // 捕获异常
          throw err
        }
    }
}

声明式语法

pipeline{
   agent any

   stages{
    stage("Build"){
        steps{
          echo "构建应用"
        }
     }
    stage("Test"){
        steps{
           echo "测试应用"
        }
     }
    stage("Deploy"){
       steps{
         echo "部署应用"
       }
     }
   }
   post {
        failure{
          echo "运行失败"
        }
     }
}

以下两种语法格式差异如下所示:

脚本式语法灵活、可扩展,也意味着更复杂。适合于对于Groovy非常熟悉的团队或个人

声明式语法简单、更结构化

pipeline插件从2.5版本开始,同时支持两种格式的语法。后续示例均采用声明式语法

1.3 Jenkinsfile

Jenkinsfile是一个文本文件,是pipeline概念在Jenkins中的具体体现形式。类似于Dockerfile与Docker的关系。

如果在Jenkins使用pipeline,需要确认是否安装pipeline插件。

pipeline 的代码可以直接写到Jenkins里面也可以通过版本管理工具来拉取。gitlab拉取示例如下所示:

图片

01pipelineFromGit.png

脚本路径:就是pipeline的文件名,默认为Jenkinsfile


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Python之路—200行Python代码搞了个打飞机游戏!!

早就知道pygame模块,就是没怎么深入研究过,恰逢这周未没约到妹子,只能自己在家玩自己啦,一时兴起,花了几个小时写了个打飞机程序。 很有意思,跟大家分享下。 先看一下项目结构 1 2 3 4 5 6 7 8 9 10 11 1…

盒子模型-css

个人学习笔记 文章目录1.什么是盒子模型?2.外边距3.css边框4.内边距1.什么是盒子模型? HTML文档中的每个元素都被描绘成矩形盒子,这些矩形盒子通过一个模型来描述其占用的空间,这个模型称为盒子模型。 盒子模型用四个边界描述&am…

打字的哪阿空扥

打字的那些事之快速移动光标 一## 、提出快速移动光标的原因 (1)键盘移动光标方向键不合理 情景再现: 当我们在打出一句话时,其中一个字打错,我们就需要去删除它,此时我们做的动作,无非有两种…

Linux知识结构体系简述

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。严格来讲,Linux 这个词本身只表示 Linux 内核,但实际上人们已经习惯了用 Linux 来形容整个基于 Linux 内核&…

QFtp编译

QFtp下载:https://github.com/qt/qtftp 打开源码 修改头文件(不然编译会报错) 打开qftp.pro CONFIG static CONFIG - shared改成 CONFIG - static CONFIG shared也就是 - 号互换位置 4. 编译生成文件 linux下:*.a文件为.lib文件 windows下&#xf…

Python学习基础笔记二十六——推导式

列表推导式: 例1:30以内能被3整除的数: print([i for i in range(30) if i % 3 0]) 结果: 例2: 30以内能被3整除的数的平方: print([i**2 for i in range(30) if i % 3 0]) 结果: 例3&…

Golang sync.Map 原理(两个map实现 读写分离、适用读多写少场景)

参考: 由浅入深聊聊Golang的sync.Map 通过对源码的逐行分析,清晰易懂Golang sync.Map原理 通过向 sync.Map 中增删改查来介绍sync.Map的底层原理Golang中sync.Map的实现原理是什么 很好的概括了sync.Map的原理手摸手Go 深入理解sync.Map 知乎大佬 大家…

CentOS7.9系统部署(nginx+uwsgi+flask)项目

一、概述 上次,我们介绍了如何将CentOS服务器自带的Python3.6.8版本升级到Python3.8.0版本,现在我们开始介绍如何将flask项目部署的CentOS7.9版本的Linux服务器上。 二、环境准备 2.1安装git 我们通常会将自己的项目托管在Github或者gitee平台&#…

地址锁存器,总线控制器,双向总线驱动器(数据缓冲器),时钟发生器。8088最小工作模式。

这几个芯片你知道它叫什么干什么用,跟CPU怎么接就可以。一般就是考填空 目录 这几个芯片你知道它叫什么干什么用,跟CPU怎么接就可以。一般就是考填空 地址锁存器(74LS373,8282) 数据缓冲器 8286,74LS24…

Spring MVC 常用注解的使用

ResponseBody 由于 Spring MVC 是基于 MVC 这个设计模式的,所以在不加上注解的情况下,页面和前端交互的时候返回的默认是一个视图 View,或者说静态页面,而实际上用的比较多的是将处理完的数据发送给前端,所以我们可以…

第五章. 可视化数据分析分析图表—常用图表的绘制2—直方图,饼形图

第五章. 可视化数据分析分析图 5.3 常用图表的绘制2—直方图,饼形图 本节主要介绍常用图表的绘制,主要包括直方图,饼形图。 1.直方图(matplotlib.pyplot.hist) 直方图,又称质量分布图,一般用横…

[附源码]JAVA毕业设计农产品的物流信息服务平台(系统+LW)

[附源码]JAVA毕业设计农产品的物流信息服务平台(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 …

MyBatis开发的详细步骤

推荐教程:SSM框架 一、什么是Mybatis 1.mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。 2.mybatis通过x…

Windows下使用labelme标注图像

安装参考链接:https://github.com/wkentaro/labelme 一、安装Anaconda Windows下安装labelme需要借助Anaconda环境,安装很简单 https://www.anaconda.com/download/ 先进入官网,然后点击Windows系统版本 下载完成之后,就按照提…

[附源码]计算机毕业设计社区生活废品回收APPSpringboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

网站都变成灰色,其实几行代码就搞定了!

最近,全站和各个App的内容都变成了灰色,包括按钮、图片等等。 这时候我们可能会好奇这是怎么做到的呢? 有人会以为所有的内容都统一换了一个 CSS 样式,图片也全换成灰色的了,按钮等样式也统一换成了灰色样式。但你想想…

Java入门教程(11) ——基本数据类型

文章目录1.数据类型22.1 整型2.2 浮点型2.3 字符型2.4 布尔型1.数据类型 分为基本数据类型和引用数据类型 如图示: 2 2.1 整型 byte 1字节 short 2 字节 int 4字节 long 8字节. Java 整型常数默认为 int 型,声明 long 型常量可以后加‘ l ’或‘ L ’…

kube-OVN总体架构

本文档将介绍 Kube-OVN 的总体架构,和各个组件的功能以及其之间的交互。 总体来看,Kube-OVN 作为 Kubernetes 和 OVN 之间的一个桥梁,将成熟的 SDN 和云原生相结合。 这意味着 Kube-OVN 不仅通过 OVN 实现了 Kubernetes 下的网络规范&#x…

热销产品缺货,滞销产品积压?WMS系统如何打造智能仓储

仓库是企业物流系统中的一个关键环节,涵盖出库、入库、质检等各个流程。传统的仓储模式单一、反应迟钝,难以适应企业的数字化经营要求。 如何在最小的人力资源下,最大限度地发挥仓库的价值,在最小的成本下,最大限度地利…

【服务器数据恢复】Zfs文件系统误删除数据的数据恢复案例

服务器故障: 一台zfs文件系统服务器,运维人员误操作删了服务器上的数据,用户联系到我们数据恢复中心要求恢复数据。 服务器数据恢复过程: 1、服务器数据恢复工程师对故障服务器所有硬盘进行扇区级镜像备份,后续的数据…