快速周转的Jenkins Pipeline脚本开发

时间:2019-06-05 03:47:46

标签: jenkins groovy jenkins-pipeline

是否可以交互地编写Jenkins Pipeline脚本,就像可以在Jenkins脚本控制台中运行其他Groovy一样?理想情况下,我实际上需要“詹金斯中的管道groovysh”。

AFAICS脚本控制台未设置使管道正常运行所需的任何环境,因此您不能仅在此处运行管道作业的临时块。

我知道“重播”选项,但是对于远程Jenkins来说,它的速度很慢,而且无法很好地集成到VCS中。

背景:最近,我在Jenkins管道上做大量工作时,发现测试周期变得很痛苦。真是讽刺。提交,推送到工作分支,“使用参数构建”(或重建)指向pipleine脚本工作分支的作业,等待结果,检查控制台日志,然后重复。

乏味。

通过将我的测试作业自动触发推送到管道存储库,我已经对其进行了一些改进,但这仍然很笨拙。

为测试而建立本地Jenkins并不是很实际-管道需要与私有Docker注册表进行交互,需要特定的插件配置,需要特定的工作程序类型等等。这也无济于事转机。

那么其他人如何做得更好? jenkins-cli遥控器?其他吗?

1 个答案:

答案 0 :(得分:0)

我使用了两种方式处理管道,以减轻您正在经历的痛苦的developer-test-fail-fix周期:

1)基于单元测试的测试方法

在单元测试框架中编写管道,并使用诸如IntelliJ IDEA之类的IDE完全模拟所有内容。使用Spock或JUnit创建使用Groovy开发的单元测试,并使用JenkinsPipelineUnit测试框架。如果您愿意编写单元测试和嘲笑,那么可以,但是很多人却不是。它适用于我的大多数管道。

2)使用Docker和文件系统SCM插件

使用Jenkins Configuration as Code (JCasC)在开发机器上的Docker中启动Jenkins,将其配置为尽可能接近您的生产系统。在运行Jenkins map / bind的Docker容器中,在主机系统上安装一个目录,其中包含所有管道代码到Docker容器中。然后,您可以使用名为“ File system SCM Plugin”的Jenkins插件。使用此FS SCM插件,您可以在Dockerized Jenkins中配置管道作业,以将其管道代码直接从映射到Docker容器的主机上的文件系统中获取。因此,您要做的是在主机系统上的IDE中打开管道代码,根据需要进行任意编辑,并在Dockerized Jenkins中执行作业,而无需提交。然后,在完成调试/开发后,将代码提交给生产服务器。此方法基于CloudBees的Oleg Nenashev的工作和思想,值得看一下他的演讲"How to Develop Your Jenkins Pipeline Locally"。要在Docker中设置Jenkins并通过YAML进行配置,请浏览JCasC README文件以及Jenkins Docker项目,以了解如何配置已安装的插件。

您还可以从Jenkins Pipeline Authoring special interest group获得有关此主题的一些有用信息。