【坑】说一点关于pipeline配置脚本和调用jenkinsfile的区别


【背景】本文所说的对比双方是指在流水线阶段使用“Pipeline script”和“Pipeline script from SCM”两者使用上的差别;之前使用的过程中也没有严格区分两者,但是在调试过程中还是隐约能感觉到两者貌似有点差异,但是抓住实锤,也没有功夫去总结,刚好今天碰到了这个情况,落实了,起码这是一个区别,请各位注意避坑!


【实现目的】在pipeline函数外def相关内容以获得动态定义变量的目的,用于在构建中使用。太拗口了,说具体一点就是在maven项目的编译打包的过程中取用某个子项目的pom文件内变量值。


【导火索】因为上一个job是在别人建立的基础上改造的,增加了上述功能,而此job原本就是通过scm获取jenkinsfile的方式配置的,所以一切皆顺利,而我新建的工程,为图方便,就直接使用了“Pipeline script”将脚本配置在了job配置中,这就是本次发现的起因。


【配置】因为我用md的方式不熟练,所以就不要代码行了,直接上图

先在pipeline外def相关函数


然后用在env的自定义变量中
image


我的流程是这样,先下载代码,之后输出下按以上流程定义的变量
image


【结果】

使用“Pipeline script”方式配置后,控制台输出是这样的
image



效果是一上来就先导入环境变量,然后就直接开始执行def的语句,明显和我之前的经验不一样啊,这种情况屡试不爽,不管怎么搞都是会先进入def或者说是先触发def;


看看我之前的通过jenkinsfile的方式的效果,一样的配置,效果如下

先顺利进入下载代码
image


下载完后进入def语句中的导入环境变量
image


执行完第一个def接着执行第二个def
image


最后一个def执行完后,我又发现了一个问题:竟然又再一次更新代码了……怎么回事
image


这次更新完代码后才进入下一个stage,真搞不懂了怎么又和之前理解的不一样……
image

【最后】综上,就是我发现的问题,通过总结又发现了新问题。暂时没工夫研究这个了。就想发出来让看到的人避坑,如果有懂的人能解释解答也是很好哒

有时候我也会遇到莫名奇怪的错,之前都能正常执行编译,后来就一直报错无法通过,也查不出啥问题,报错信息如下:

最后只能在执行指令之前,添加环境设置,也就顺利编译通过了。
添加 export JAVA_HOME=/******** 目前这样都能顺利编译通过。

这是很不错的体验分享,大家都在使用并摸索的路上,只有多分享,多交流,才会更加熟练,学习了,后边有时间研究下,不过markdown真的不复杂,在论坛分享,大概三四个语法就够用了

1赞