Jenkins常见问题问答录(二)

2024-05-18 08:18:05 浏览数 (3)

问题11:Pipeline脚本里怎么触发其他Jenkins任务?

参考:有一个build步骤,可以研究一下,支持同步或异步触发。

问题12:有没有方便的方法看Jenkins上当前安装的插件列表和版本?插件管理-已安装里可以看到,但是复制下来有多余的信息,不好处理。比如多了插件简介,复制到表格里还要手动一个个删除。

参考:系统管理-系统信息,最下面有个插件章节可以看到,只有名称、版本和启用状态三列。

问题13:不同分支要有不同的处理动作,用Pipeline怎么写?

参考:

代码语言:javascript复制
when {
    branch 'xxx'
}
steps {
    echo 'do something'
}

问题14:Pipeline的共享库怎么用?

参考:Pipeline脚本写多了,虽然每个任务会有不同,但是有很多公共或类似的部分,这样重复写就没有必要。一个是重复劳动,二是因为每次都要手写,有可能写错还要再调试找原因。共享库就是可以把这些公共的方法提取出来,供各个Pipeline任务使用。目前做Jenkins相关工作的很多都不是开发出身,没有开发经验。这种形式其实类似编程语言的库的概念,就是把一些通用的方法提取出来,变成传参调用,属于代码复用的范畴。目前来说共享库的用法主要有两种,一种是把Pipeline的内容全部用共享库来生成,Jenkinsfile里面就写一行语句调用就行;一种是Pipeline的主框架还是写在Jenkinsfile里,共享库里只是实现一些自定义的单个步骤。另外多说一句,目前大多数人刚刚起步转Pipeline,Jenkinsfile自己写,共享库也是自己为了省事提取一下公共方法,会形成一个“共享库都是要自己写”的先入为主的观念,这个也不是这样的。其实只要有合适的,其他人的库完全也可以使用。这就和编程语言的第三方库一个意思。编写Pipeline共享库需要有Groovy编程语言的知识(Pipeline也不是纯粹的Groovy语言,限于篇幅,不细说),好好学习一下。少年,现在你也是一名开发人员了!

问题15:脚本式Pipeline里面怎么使用post方法?

参考:post只能在声明式Pipeline里使用,脚本式Pipeline里面是使用最原始的try...catch...方式来捕获异常。一般如无特殊需要,建议使用脚本式Pipeline,门槛低一些。并且脚本式Pipeline提供了script步骤,支持执行Groovy脚本。

问题16:设置超时时间能够用Pipeline代码实现吗?

参考:可以。如以下代码,表示设置超时时间1小时,在流水线全局和阶段(stage)级别都可以设置

代码语言:javascript复制
options {
  timeout(time: 1, unit: 'HOURS')
}

问题17:有什么可以监控Jenkins配置变化的插件吗?

参考:有。jobConfigHistory插件,可以监控、对比Jenkins任务配置的变化。原理上是对比对应的config.xml。而对于Pipeline类型的任务,一般都是配置代码库,并指定Jenkinsfile文件位置。这样的话即便修改了Jenkinsfile的内容,对应的config.xml也是不会变化的。为了解决这个问题,就有了另外一个插件——Pipeline Configuration History,它不仅能够追踪Jenkinsfile,还可以追踪全局共享库的变化,非常全面。

问题18:邮件无法发送成功?

参考:原因有多种,一个比较常见的原因是系统配置页面中的“系统管理员邮件地址”没有配置的邮件发件人一致,容易忽略。

问题19:Jenkins有中文社区吗?

参考:有。官网:https://jenkins-zh.cn 目前还在建设中,欢迎多贡献代码、提PR,以及反馈意见建议。

问题20:有些时候从任务日志里面看不出来错误原因?

参考:可以试试看一下Jenkins系统日志,这里也藏着很多告警和错误信息,是个定位问题的好地方,一般人都不知道哦。路径:首页-系统管理-系统日志-所有系统日志。

1 人点赞