Jenkins常见问题问答录(三)

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

问题21:Jenkins定时构建怎么精确到秒?

参考:不能精确到秒。Jenkins定时构建表达式分为5部分,第一位最小,为分钟,后续依次为小时、天、月、周(0和7都表示周日)。

问题22:Pipeline如何禁止同一个任务多个构建并发执行?

参考:

代码语言:javascript复制
options {
    disableConcurrentBuilds()
}

问题23:经典类型任务里的“丢弃旧的构建”在Pipeline里怎么写?

参考:以保持构建30天,保持构建最大个数100个,发布包保留天数30天,发布包最大保留个数100个为例:

代码语言:javascript复制
options {
  buildDiscarder logRotator(artifactDaysToKeepStr: '30', artifactNumToKeepStr: '100', daysToKeepStr: '30', numToKeepStr: '100')
}

问题24:怎么学好Jenkins?

参考:大而言之,天下学问:心性之学,侧重靠心悟;记问之学,侧重靠脑记。悟是一念之间,性质发生巨变。记问之学,也就是现代的科学知识(不包括科学研究),是“死”的、固定的、逻辑化的、流线形的、分层次的、有条理的。小而言之,学习Jenkins,就是理解它的结构和运行流程以及工作中的业务结构和流程。了解Jenkins每个结构做什么事情,涉及哪些插件,每个插件又有什么功能。循序渐进、顺藤摸瓜、不怕麻烦、耐得住寂寞、层次逐渐深入,专业能力也就越来越强悍了。心性之学耗心力,记问之学耗脑力,心脑并用,境界和专业能力都能得到提升。

问题25:介绍一个珍藏的技巧。

参考:手动修改机器里的config.xml后,点击系统管理-读取配置即可让配置立即生效,无需重启Jenkins,不会影响正在执行的任务!

问题26:Pipline文件参数上传的文件在什么位置?

参考:文件参数类型,目前Pipeline是不支持的。有用户反馈过这个问题,然后官方把file类型参数从文档里去掉了……用户手工上传文件,也不利于自动化,建议把这个文件放到一个网络可以访问的位置上,然后把文件参数用字符串参数代替,字符串为网络路径;或者放到一个git仓库里管理也行,用户更改也方便,本地提交即可。思路如此,可以按自己情况来安排。

问题27:一段很长的错误调用堆栈,不知道错误原因。

参考:这里面比较关键的报错是“java.io.NotSerializableException“,这是个比较普遍的问题,所以拿出来说一下。Pipeline有一个很重要的特性,就是重启后恢复。由于这个特性的需要,Pipeline脚本里使用的类必须都是序列化了的。现在很多人刚接触Pipeline,会把它当成纯Groovy来用,其实是不行的。一般来说,尽量不要手动去引入一些类来使用,多了解已存在的Pipeline步骤,能用步骤尽量用步骤,脚本主要用来做一些参数的分析处理,不做有重量的业务动作。

问题28:Pipeline中的stage是什么作用?

参考:这个从用户角度理解,是为了让流水线有更清晰的结构,展示的时候更清晰,出错时定位问题能一眼知道是哪块出了问题。从代码维护角度来说,可以让Pipeline脚本有清晰的结构。

问题29:Jenkins要不要用k8s?

参考:脱离实际来讲这些没有意义,要看项目的规模和实际需求。有痛点,k8s又能解决你的痛点,就需要。如果没有,只是增加技术复杂性,提高了技术门槛却没有获得好处。对自己使用对技术栈足够熟悉才能快速地处理、解决问题。如果生产规模有上k8s的需求,可以上,同时个人要抓紧补充k8s的相关知识。反之可以先不上,但个人也有必要学习k8s,从个人职业规划和发展考虑,k8s是必须要啃下的骨头。

问题30:Pipeline可以执行另一个Jenkinsfile吗?

参考:不可以。但可以用build步骤触发另一个Jenkins任务。

1 人点赞