写在前面
作为CI/CD工具的宠儿,jenkins深受java程序员、k8s领域的喜爱。jenkins有广泛的插件,可以支撑多种应用场景。虽然jenkins的权限管理让人感到可惜,但是基于庞大的用户群,小强将给大家介绍一下何为Pipeline
目录索引
Pipeline流水线
什么是流水线
Pipeline也称之为流水线,在jenkins中,指的是将执行流程以流水线的方式进行。
流水线的特点:
- 支持串行、并行
- 任意流程报错,终止整个流程
流水线的好处?
在没之前流水线之前,你或者也像小强本人一样,新建一个item,然后扒拉扒拉写了一堆配置,成功跑起一个任务。
这种方式看似可行,但是可移植性、维护性非常差。
上述配置方式的缺点如下:
- 任务配置都必须在jenkins上使用,一旦jenkins服务器出问题了,如何快速恢复呢?配置根本带不出来。
- 每次在jenkins上做配置变更,无法进行操作人员的追溯,万一不小心把item删除了。 又要花时间去重新配置了!!!
为了解决上述一系列复杂问题,jenkins提供了一种更优的解决方案(小强强烈推荐!!!)使用Pipeline去构建任务。
它可以将你的配置都写入到执行文件(Jenkinsfile)中,这个文件一般在你的项目中进行维护(比如随项目上传到gitlab),让我们来看看jenkinsfile长什么样
当然,小强将Jenkinsfile分为CI、CD两个文件,这么做是有目的的,后文会进行介绍
流水线配置文件-Jenkinsfile
同大多数编程命名方式一致(Makefile、Dockerfile),jenkins的配置文件为Jenkinsfile
Jenkinsfile语法
参考官方链接
https://www.jenkins.io/zh/doc/book/pipeline/syntax/
如何创建流水线任务
在jenkins界面新建一个流水线任务(英文版叫 Pipeline)
配置git仓库地址,表示使用哪个项目构建
配置脚本执行路径,一般Jenkisfile会在项目的根路径的,可以像小强一样配置(小强把配置文件命名为Jenkinsfile-CI,各位按照自己的配置来)
至此,流水线任务创建完毕,测试时直接任务就行跑了。
如何优雅的玩耍Jenkinsfile
通常我们说CICD,应该是分开为CI、CD才是。
持续集成工作可以在任意阶段完成,持续集成包含程序的代码检测、编译、单元测试等复杂工作,相对耗时!
持续交付只能在需要发布的时候完成。因此,我们可以将CI、CD剥离开来,把耗时的CI前置并自动化处理。
以小强的项目案例(JAVA项目)来介绍,小强创建了Jenkinsfile-CI、Jenkinsfile-CD两个文件。
通过gitlab-webhooks,当代码发生push/merge时,触发jenkinsfile-CI,完成项目的编译、单元测试、打包。
最后,在需要发布的时候,执行Jenkinsfile-CD,将打包好的文件丢到目标服务器并执行。