Jenkins-Pipeline

Pipeline

1 安装插件
在这里插入图片描述

2 新建一个 Pipline 工程
在这里插入图片描述
3 配置Pipeline 脚本
agent的使用可以参考这个文档

pipeline {agent anystages {stage('Build') { steps {echo 'Building project...'}}stage('Test') { steps {echo 'Testing project...'}}stage('Deploy') { steps {echo 'Deploying to server ...'}}stage('Push') { steps {echo 'Pusing to harbor ...'}}}
}

我们配置的每一个阶段都可以在这里展示:
在这里插入图片描述
4 如果我们需要在阶段内部执行多条指令

pipeline {agent anystages {stage('Build') { steps {sh 'echo "multi-steps pipeline"'sh '''echo "multi command"pwdls'''}}}
}

5 失败以后重重试

pipeline {agent anystages {stage('Build') { steps {sh 'echo "multi-steps pipeline"'sh '''echo "multi command"pwdls'''}}stage('Test') { steps {echo 'Testing project...'}}stage('Deploy') { steps {echo 'Deploying to server ...'}}stage('Push') { steps {echo 'Pusing to harbor ...'}}stage('Retry') { steps {retry(3) {sh 'Retry failure...'}}}}
}

在这里插入图片描述

在这里插入图片描述
6 超时重试

pipeline {agent anystages {stage('Build') { steps {sh 'echo "multi-steps pipeline"'sh '''echo "multi command"pwdls'''}}stage('Test') { steps {echo 'Testing project...'}}stage('Deploy') { steps {retry(3) {sh 'echo hello_world'}timeout(time: 3, unit: 'SECONDS') {sh 'sleep 5'}}}stage('Push') { steps {echo 'Pusing to harbor ...'}}stage('Retry') { steps {retry(3) {sh 'Retry failure...'}}}}
}

在这里插入图片描述
7 使用环境变量

pipeline {agent any#在这里进行环境变量的定义environment {EV1 = 'e1'EV2 = 'e2'}stages {stage('Build') { steps {#在后面的i奥本中进行应用sh 'echo "Hello, $NAME1 and $NAME2"'}}}
}

上面的例子是为了方便演示,这里也提供一个生产环境中会使用的真正的pipeline,是一个脱敏后的demo, 然后我们还可加一些代码检查机制在构建步骤里面,关于代码检查:

pipeline {agent {node {label 'Slave1'}}environment {def artifactId = 'xxxx'def projectNameSpace='backend'def harborIp='ip:8888'}stages{stage('pull'){steps{git branch: 'master', credentialsId: 'jenkins-gitlab', url: 'http:xxxx.git'}}stage('compiler'){steps{ sh '''mvn clean package -DskipTests -Pmaster'''}}stage('build'){environment {def version = sh script: 'mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout', returnStdout: true} steps{sh '''cp -r ./gis-config    startup/demo-project/target/mv ./startup/demo-project/Dockerfile startup/demo-project/target/Dockerfiledocker build -t ${harborIp}/${projectNameSpace}/b_${artifactId}:${version} startup/demo-project/targetdocker build -t ${harborIp}/${projectNameSpace}/b_${artifactId}:1.1.8 startup/demo-project/target'''}}stage('push'){environment {def version = sh script: 'mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout', returnStdout: true} steps{sh '''docker push ${harborIp}/${projectNameSpace}/b_${artifactId}:${version}docker push ${harborIp}/${projectNameSpace}/b_${artifactId}:1.1.8'''}}}
}

8 使用post action

pipeline {agent anystages {stage('Build') { steps {sh 'echo "multi-steps pipeline"'sh '''echo "multi command"pwdls'''}}stage('Test') { steps {echo 'Testing project...'}}stage('Deploy') { steps {retry(3) {sh 'echo hello_world'}timeout(time: 3, unit: 'SECONDS') {sh 'sleep 5'}}}stage('Push') { steps {echo 'Pusing to harbor ...'}}stage('Retry') { steps {retry(3) {sh 'Retry failure...'}}}}post {always {echo 'always executed'}success {echo 'executed if this test success'}failure {echo 'executed if this test fails'}}
}

在这里插入图片描述

Blue Ocean

除了在Jenkins项目配置中写入Pipeline DSL, 还可以通过BlueOcean UI设置流水线项目。

Blue Ocean 重新思考Jenkins的用户体验,重新设计Jenkins Pipeline, 但与原有的Jenkins作业兼容,增加了新的特性:

  • Pipeline可视化
  • 异常处理可视化
  • Pipeline 编辑器
  • Git集成协作

但是BlueOcean暂时还不成熟,原有的Jenkins classic UI依然保留。需要以插件的形式安装BlueOcean

BlueOcean Plugin

默认情况下不安装 BlueOcean Plugin,手动安装流程如下

  • Manage Jenkins > Manage Plugins > Available Tab
  • 在filter框内输入blue ocean,点击安装
  • Blue Ocean 会自动安装有依赖关系的插件
  • 重启

Dashboard左侧出现Open Blue Ocean

这个其实就是,将Pipe的脚本采用UI的界面来配置,这里演示了,感兴趣的可以去试试,我还是喜欢直接写脚本。

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

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

相关文章

java基础之线程安全问题以及线程安全集合类

线程安全问题 当多个线程同时访问同一个临界资源时,原子操作可能被破坏,会导致数据丢失, 就会触发线程安全问题 临界资源: 被多个线程同时访问的对象 原子操作: 线程访问临界资源的过程中不可更改和缺失的操作 互斥锁 每个对象都默认拥有互斥锁, 该锁默认不开启. 当开启互斥…

Go新项目-Gin中wire的依赖注入方式实战(6)

选型Go项目过程中,针对依赖注入方式的分析和使用 参考资料 https://go.dev/blog/wirehttps://medium.com/dche423/master-wire-cn-d57de86caa1bhttps://toutiao.io/posts/et0t2lk/previewhttps://imlht.com/archives/223/https://lailin.xyz/post/go-training-week…

即将被AI取代的工作

这个博客 100% 是由人类而不是机器人撰写的。至少在某种程度上,目前仍然需要内容作家。 你的工作怎么样?您是否想过人工智能(AI)是否有可能渗透到您生活的无形本质?您花费数年时间获得的所有知识、技能和经验是否会因…

谈谈前端开发中的防抖和节流

本文作者为 360 奇舞团前端开发工程师 李武阳 概述 防抖和节流是前端开发中常用的函数优化手段,它们可以限制函数的执行频率,提升性能和用户体验。主要用于处理高频触发的事件,例如:用户的滚动、输入、点击和表单的重复提交等。 防…

OceanBase OBCA认证考试预约流程

【OceanBase】OBCA认证考试预约流程 - 课程体系 - 云贝教育https://www.yunbee.net/Home/News/detail/article_id/541.html 一、OBCA账号登录/注册,链接 https://www.oceanbase.com/ob/login/mobile?gotohttps%3A%2F%2Fwww.oceanbase.com%2Ftraining%2Fdetail%3Fle…

Windows Redis图形客户端 Another Redis Desktop Manager的简单使用教程

1、 Redis官方文档 2、 Redis国内中文版文档 3、 Redis客户端 Another Redis Desktop Manager 4、连接redis服务 我直接使用的是公司搭建好的服务。连接服务需要以下几个信息: HostPortPasswordSSL 5、New Key 5.1 如何创建一个Key? 点击New k…

从前端角度浅谈性能 | 京东物流技术团队(转载)

1 前言 自网站诞生以来,页面白屏时间、用户交互的响应速度等一直都是开发者关心的问题,这直接影响了一个网站能否为用户的浏览提供舒适的服务,而这种舒适度,直接关系着对用户的吸引力,毕竟谁都不能忍受一个页面长达10秒…

webassembly003 whisper.cpp的项目结构CMakeLists.txt

注:带星号的为非重要部分 基础配置 cmake_minimum_required (VERSION 3.5)project(whisper.cpp VERSION 1.5.0)# Add path to modules list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/") # 在\cmake文件夹下还有BuildTypes.cmake&a…

Uboot-5(U-Boot源码分析1-启动第一阶段)

来源:朱有鹏老师的嵌入式linux核心教程 1、start.S引入 1.1、u-boot.lds中找到start.S入口 (1)、在C语言中整个项目的入口就是main函数(这是C语言规定的),所以譬如说一个有10000个.c文件的项目,第一个要分析的文件就…

Go 中 slice 的 In 功能实现探索

文章目录 遍历二分查找map key性能总结 之前在知乎看到一个问题:为什么 Golang 没有像 Python 中 in 一样的功能?于是,搜了下这个问题,发现还是有不少人有这样的疑问。 补充:本文写于 2019 年。GO 现在已经支持泛型&am…

腾讯云 腾讯云服务器 - 腾讯云 产业智变·云启未来

腾讯云服务器CVM提供安全可靠的弹性计算服务,腾讯云明星级云服务器,弹性计算实时扩展或缩减计算资源,支持包年包月、按量计费和竞价实例计费模式,CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格,提供9个9的数…

【工作记录】基于springboot3+springsecurity6实现多种登录方式(一)

前言 springboot3已经推出有一段时间了,近期公司里面的小项目使用的都是springboot3版本的,安全框架还是以springsecurity为主,毕竟亲生的。 本文针对基于springboot3和springsecurity实现用户登录认证访问以及异常处理做个记录总结&#x…

Linux miniGUI移植分析

框架介绍 常用GUI程序对比 https://www.cnblogs.com/zyly/p/17378659.html MiniGUI分为底层的GAL(图形抽象层)和IAL(输入抽象层),向上为基于标准POSIX接口中pthread库的Mini-Thread架构和基于Server/Client的Mini-L…

JSONObject - 用最通俗的讲解,教你玩转 JSON 数据的解析和修改

目录 一、JSONObject 1.1、为什么要使用他? 1.2、应用 1.2.1、依赖 1.2.2、JSON 数据示例 1.2.3、JSON 数据的构建 1.2.4、JSON 数据的解析 一、JSONObject 1.1、为什么要使用他? 在还没有接触过这个东西的时候,一直是通过 ObjectMap…

Spring 核心之 IOC 容器学习二

基于 Annotation 的 IOC 初始化 Annotation 的前世今生 从 Spring2.0 以后的版本中,Spring 也引入了基于注解(Annotation)方式的配置,注解(Annotation)是 JDK1.5 中引入的一个新特性,用于简化 Bean 的配置,可以取代 XML 配置文件…

深度学习记录--归—化输入特征

归化 归化输入(normalizing inputs),对特征值进行一定的处理,可以加速神经网络训练速度 步骤 零均值化 通过x值更新让均值稳定在零附近,即为零均值化 归化方差 适当减小变量方差 解释 归化可以让原本狭长的数据图像变得规整,梯度下降的…

Electron中苹果支付 Apple Pay inAppPurchase 内购支付

正在开发中,开发好了,写一个完整详细的过程,保证无脑集成即可 一、先创建一个App 一般情况下,在你看这篇文章的时候,说明你已经开发的app差不多了。 但是要上架app到Mac App Store,则要在appstoreconnect…

WPF中Image控件Source的多种指定方式

XAML中 1、直接绝对路径直接给Source 2、将图片放到项目里面,设置图片为资源;Source写法为: (1)Source"pack://application:,,,/label里面的Content;component/folder/test.png" (2&…

HBase学习六:LSM树算法

1、简介 HBase是基于LSM树架构实现的,天生适合写多读少的应用场景。 LSM树本质上和B+树一样,是一种磁盘数据的索引结构。但和B+树不同的是,LSM树的索引对写入请求更友好。因为无论是何种写入请求,LSM树都会将写入操作处理为一次顺序写,而HDFS擅长的正是顺序写(且HDFS不…

鸿蒙应用开发横空出世:是否应该换赛道

鸿蒙应用开发横空出世:互联网寒冬的希望? 大家好,我是demo.最近相信大家最近也收到了这样的消息,网上大肆宣传明年未来的趋势是鸿蒙应用开发,这里呢我也确实被这些信息所覆盖.最近几年确实互联网行业不是很景气,许多公司大量裁员,很多人都因此丢了工作.大龄程序员一直是互联网…