我有一个 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 大佬的回答~~