【发布时间】:2019-08-30 16:38:46
【问题描述】:
我正在研究jenkins,试图将maven项目打包到war中,然后将其移动到之前启动的tomcat webapps目录(/opt/tomcat/latest/webpass),但它报告'没有这样的文件或目录' .
已经找出原因,但不知道为什么。詹金斯不使用与原始文件系统相同的文件系统?
这是我的故障排除:
1、我在我的linux服务器下/下创建了一个目录temp20190808。
2、然后在jenkins文件中添加sh 'ls / -l',没有temp20190808,而且每个文件在ls形式中的描述与原文件有差异(详见下方)。
3、使用jenkins文件,我在/下创建一个文件为jenkinstmp2019,然后ls / -l,它就在那里,但是在rm之后创建jenkinstmp2019的代码,然后rebuild,ls / -l,@987654330 @ 不再存在,所以 jenkins 文件系统是一次性工作?
这里是第 1,2 点的代码阐述:
在我的 linux 服务器中,使用 ls / -l,有一个我刚刚创建的 tmp20190808。
total 24
lrwxrwxrwx. 1 root root 7 Jun 19 16:53 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Aug 1 04:55 boot
drwxr-xr-x. 17 root root 2860 Aug 7 02:48 dev
drwxr-xr-x. 86 root root 8192 Aug 7 20:52 etc
drwxr-xr-x. 4 root root 46 Jul 12 08:12 home
lrwxrwxrwx. 1 root root 7 Jun 19 16:53 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Jun 19 16:53 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 media
drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
drwxr-xr-x. 5 root root 53 Jul 23 08:11 opt
dr-xr-xr-x. 101 root root 0 Aug 7 02:47 proc
dr-xr-x---. 7 root root 215 Aug 6 02:53 root
drwxr-xr-x. 28 root root 920 Aug 8 02:03 run
lrwxrwxrwx. 1 root root 8 Jun 19 16:53 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
dr-xr-xr-x. 13 root root 0 Aug 7 02:47 sys
drwxr-xr-x. 2 root root 6 Aug 8 01:50 temp1
drwxrwxrwt. 20 root root 4096 Aug 8 02:23 tmp
drwxr-xr-x. 2 root root 22 Aug 8 01:39 tmp20190808
drwxr-xr-x. 13 root root 155 Jun 19 16:53 usr
drwxr-xr-x. 20 root root 4096 Jul 12 07:36 var
在詹金斯中。
total 8448
drwxr-xr-x. 1 root root 19 Jun 9 2016 bin
drwxr-xr-x. 2 root root 6 May 30 2016 boot
-rw-------. 1 root root 8646656 Jun 9 2016 core
drwxr-xr-x. 5 root root 360 Aug 8 01:58 dev
drwxr-xr-x. 1 root root 66 Aug 8 01:58 etc
drwxr-xr-x. 2 root root 6 May 30 2016 home
drwxr-xr-x. 1 root root 45 Jun 9 2016 lib
drwxr-xr-x. 2 root root 34 Jun 8 2016 lib64
drwxr-xr-x. 2 root root 6 Jun 8 2016 media
drwxr-xr-x. 2 root root 6 Jun 8 2016 mnt
drwxr-xr-x. 2 root root 6 Jun 8 2016 opt
dr-xr-xr-x. 123 root root 0 Aug 8 01:58 proc
drwx------. 1 root root 33 Aug 8 01:58 root
drwxr-xr-x. 3 root root 30 Jun 8 2016 run
drwxr-xr-x. 2 root root 4096 Jun 8 2016 sbin
drwxr-xr-x. 2 root root 6 Jun 8 2016 srv
dr-xr-xr-x. 13 root root 0 Aug 7 02:47 sys
drwxrwxrwt. 1 root root 29 Jun 9 2016 tmp
drwxr-xr-x. 1 root root 30 Jun 10 2016 usr
drwxr-xr-x. 1 root root 41 Jun 9 2016 var
如您所见,它就像两个完全不同的 linux 服务器,但它是同一个。 所以我想知道詹金斯是否创建了一个临时虚拟文件服务器来执行它的工作,所以除了它自己的目录之外无法访问原始文件。
【问题讨论】:
-
Jenkins 没有创建虚拟文件系统或类似的东西,这感觉就像是在不同的节点上执行。我建议将“ls / -l”替换为“/bin/hostname”并查看返回的内容。
-
非常感谢,通过搜索,我发现这也可能是与节点有关的问题。使用
/bin/hostname在 linux 服务器和 jenkins 之间显示不同的主机名,并且 jenkins 显示一个 idebf8c40f8ed1。现在至少我有正确的方向来解决问题,并且对 jenkins 有了更多的了解。让我感到困惑的是,我仍然在主节点中,自从安装 jenkins 后,对它的配置没有做任何改变。