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

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

我有一个 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,你去看这个,安全受限

沙漠丶 回复

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

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

谢谢大佬

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