是否可以交互地编写Jenkins Pipeline脚本,就像可以在Jenkins脚本控制台中运行其他Groovy一样?理想情况下,我实际上需要“詹金斯中的管道groovysh
”。
AFAICS脚本控制台未设置使管道正常运行所需的任何环境,因此您不能仅在此处运行管道作业的临时块。
我知道“重播”选项,但是对于远程Jenkins来说,它的速度很慢,而且无法很好地集成到VCS中。
背景:最近,我在Jenkins管道上做大量工作时,发现测试周期变得很痛苦。真是讽刺。提交,推送到工作分支,“使用参数构建”(或重建)指向pipleine脚本工作分支的作业,等待结果,检查控制台日志,然后重复。
乏味。
通过将我的测试作业自动触发推送到管道存储库,我已经对其进行了一些改进,但这仍然很笨拙。
为测试而建立本地Jenkins并不是很实际-管道需要与私有Docker注册表进行交互,需要特定的插件配置,需要特定的工作程序类型等等。这也无济于事转机。
那么其他人如何做得更好? jenkins-cli
遥控器?其他吗?
答案 0 :(得分:0)
我使用了两种方式处理管道,以减轻您正在经历的痛苦的developer-test-fail-fix周期:
在单元测试框架中编写管道,并使用诸如IntelliJ IDEA之类的IDE完全模拟所有内容。使用Spock或JUnit创建使用Groovy开发的单元测试,并使用JenkinsPipelineUnit测试框架。如果您愿意编写单元测试和嘲笑,那么可以,但是很多人却不是。它适用于我的大多数管道。
使用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获得有关此主题的一些有用信息。