持续集成 有关 Shared Library 在子节点上运行的疑问

Mrxiaoxie · 2018年05月16日 · 最后由 Mrxiaoxie 回复于 2018年05月17日 · 456 次阅读

我有一个pipeline作业叫 testjob,由于没有指定agent,所以它可以在master和任意一个slave节点上运行。
神奇的事情来了,有一次在某个slave节点上运行testjob出错了!!!!
查看报错信息,发现是修改的文件不存在,我连忙查看子节点的WORKSPACE确认文件路径文件,经过再三确认发现文件路径没有问题。
那问题出在哪里呢?不管了,重新运行一下job,看能否重现。 这次在master节点上运行,发现完全没有出错。
此时我内心是😠 ,神奇了,没有修改过啊,为什么就不会报错呢?

还是看会报错的信息:发现这里是调度shared Library中某个方法去修改文件,由此产生了一种猜测:
shared Library的函数只能在master上运行? 不科学啊!!

然后我就带着疑问去google啊,没什么发现。。。

请高手指点迷津,谢谢

后续:
发现并不是shared Library只能在master上运行,而是认不了slave上的文件。
为什么会这样呢?尚未找到答案
经过264768502大佬提点,再google一下,发现Stack Overflow中也有大佬回答到相关问题:
https://stackoverflow.com/questions/43748826/jenkins-declarative-pipeline-run-groovy-script-on-slave-agent

虽然还是不是很理解具体的原因,但这问题算是尘埃落定了
另外也多谢YatHo 大佬的回答~~

最佳回复

pipeline代码解析执行都在master上,涉及到操作node上的文件的,一律只能用pipeline提供的方法,要么就用sh/bat来操作node上的文件

共收到 4 条回复 时间 点赞

groovy,你去看这个,安全受限

YatHo 回复

可以提供相关的link或者进一步说明吗?

pipeline代码解析执行都在master上,涉及到操作node上的文件的,一律只能用pipeline提供的方法,要么就用sh/bat来操作node上的文件

264768502 回复

谢谢大佬

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册