热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Jenkins高级用法Jenkinsfile介绍及实战经验

系列目录1.Jenkins安装2.Jenkins集群3.Jenkins持续集成-ASP.NETCore持续集成(Docker&自由风格&Jenkinsfile)4.Jenkins高

系列目录

1.Jenkins 安装
2.Jenkins 集群
3.Jenkins 持续集成 - ASP.NET Core 持续集成(Docker&自由风格&Jenkinsfile)
4.Jenkins 高级用法 - Pipeline 安装
5.Jenkins 高级用法 - Jenkinsfile 介绍及实战经验
6.Jenkins 高级用法 - Blue Ocean 使用
7.Jenkins 高级用法 - 根据 git commit 控制构建过程
8.Jenkins 高级用法 - 微服务DevOps实战(ASP.NET Core)

常见问题:

1.Jenkins 时区设置
2.Jenkins 无法捕获构建脚本错误问题

一.什么是 Jenkinsfile

Jenkinsfile 是 Jenkins 2.x 核心特性 Pipeline 的脚本,由Groovy语言实现。Jenkinsfile一般是放在项目根目录,随项目一起受源代码管理软件控制,无需像创建“自由风格"(Jenkins FreeStyle)项目一样,每次可能需要拷贝很多设置到新项目,提供了一些直接的好处:

  • Pipeline上的代码审查/迭代
  • Pipeline的审计跟踪
  • Pipeline的唯一真实来源,可以由项目的多个成员查看和编辑。

Pipeline支持:Declarative(在Pipeline 2.5中引入)和Scripted Pipeline两种格式。两者都支持建立Pipeline,两者都可以用于在Web UI中定义一个流水线Jenkinsfile,将Jenkinsfile文件创建并检查到源代码控制库中通常被认为是最佳做法。

aaa

更多详细信息参考:玩转Jenkins Pipeline(大宝鱼) 推荐必读

二. Jenkinsfile 实战经验

看本小节之前,如果你不熟悉 Jenkinsfile 那么推荐一定要阅读,第一小节推荐的文章,里面介绍了很多基本用法。

这里的实战主要讲声明式 Jenkinsfile,因为声明式 Jenkinsfile是 Pipeline 2.5 引入的,比之以前的脚本式会有一些更先进的设计和更快捷的用法,且声明式Jenkinsfile还兼容脚本式语法。这里主要讲一些博主实际用的过程中的经验。

1.在指定的Jenkins集群结点上运行

pipeline {agent {node {label 'slave-1'}}
}

label 指你的集群结点名称

2.定义环境变量

pipeline {environment {NUGET_KEY = 'abc'}
}

使用:

env.NUGET_KEY

sh里使用

$NUGET_KEY

例子:

输出该环境变量

echo "${env.NUGET_KEY}"

sh:

sh 'echo $NUGET_KEY'

这里要注意在 sh 语句块里使用的不同。

3.设置 github webhook 触发器

triggers {githubPush()
}

UI上没有没有设置github webhook触发的。脚本设置后,需要到 【系统管理】->【系统设置】里,手动注册一下github webhook即可

4.常用的预置环境变量

变量名说明
BRANCH_NAME当前分支名称
GIT_COMMIT当前 commit hash
GIT_PREVIOUS_SUCCESSFUL_COMMIT上一次构建成功 cimmit hash

示例:

echo "branch: ${env.BRANCH_NAME}"
echo "current SHA: ${env.GIT_COMMIT}"
echo "previous SHA: ${env.GIT_PREVIOUS_SUCCESSFUL_COMMIT}"script

5.script块

script 块里可以写脚本式Jenkinsfile的语法

例子:

stages {stage('Build') {steps {script {result = sh (script: "git log -1|grep 'Release'", returnStatus: true) echo "result: ${result}"}}}}

6.设置构建结果

post { always { script { currentBuild.result = 'NOT_BUILT' } } }

一般放在 POST 语句块

7.敏感数据设置

一些敏感数据,比如账号密码,不可能卸载脚本中。

首先新建凭据(Jenkins 地址 /credentials/store/system/domain/_/):

1544687837595

类型选择 Secret text,Secret 输出你的 账号/密码等。然后记住你设置的ID,待会要用

可以通过 credentials函数来获取

credentials(&#39;<凭据id>&#39;)

例如

credentials(&#39;test&#39;)

直接输出到控制台也会加密&#xff1a;

1544687975228

8.定义变量

def cusversion&#61;"Jenkinsfile"

必须放在 pipeline 前面或者 script 语句块里面

1544695268853

9.指定分支运行stage

stage(&#39;Deploy&#39;) {when {branch "<分支名称>"}
}

三.扩展阅读

Jenkinsfile 语法 https://jenkins.io/doc/book/pipeline/syntax

玩转Jenkins Pipeline https://blog.csdn.net/diantun00/article/details/81075007

转:https://www.cnblogs.com/stulzq/p/10115589.html



推荐阅读
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 从相邻元素对还原数组的解题思路和代码
    本文介绍了从相邻元素对还原数组的解题思路和代码。思路是使用HashMap存放邻接关系,并找出起始点,然后依次取。代码使用了HashMap来存放起始点所在的adjacentPairs中的位置,并对重复的起始点进行处理。 ... [详细]
author-avatar
咖喱2502894907
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有