linux - Jenkinsfile ,通过使用 sh,说没有这样的文件或目录,但它存在

标签 linux jenkins

我在研究jenkins,试图打包一个maven项目到war,然后将它移动到之前启动的tomcat webapps目录(/opt/tomcat/latest/webpass),但是它报告'No such file or directory' .

已经找出是什么原因造成的,但不知道为什么。 Jenkins 不使用与原始文件系统相同的文件系统?

这是我的故障排除:

1、我在我的 linux 服务器的 / 下创建一个目录作为 temp20190808

2、然后在jenkins文件中添加sh 'ls/-l',没有temp20190808,并且ls形式的各个文件的描述与原创(下面有详细介绍)。

3、使用 jenkins 文件,我在 / 下创建一个文件作为 jenkinstmp2019,然后 ls/-l,它就在那里,但是之后rm创建jenkinstmp2019的代码,然后rebuild,ls/-ljenkinstmp2019已经没有了,所以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

在 Jenkins 。

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 是否创建了一个临时虚拟文件服务器来执行它的工作,所以除了它自己的目录之外无法访问原始文件。

最佳答案

自己找原因。 真正的原因是 agent,我之前使用过 agent { docker { image 'XXX' } } ,这使得 jenkins 在 docker image 上运行它的工作。然后我将它更改为 agent any,因此作业将在部署了 jenkins 的服务器上运行。

关于linux - Jenkinsfile ,通过使用 sh,说没有这样的文件或目录,但它存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57404513/

相关文章:

linux - 使用 shell 解析字符串

powershell - 为什么我不能让 Jenkins Powershell 插件工作?

Jenkins 管道里程碑不会取消之前正在进行的构建

jenkins - 如何以编程方式获取 Jenkins 用户 ID?

git - "Secret text"Git 凭据未显示在 Jenkins 项目源代码管理部分

linux - 在 Linux 上使用不同的用户帐户安装应用程序

linux - 更改 Jenkins 构建工件文件所有权

javascript - 带有 Ratchet 的 PHP WebSockets - 示例不起作用

linux - 终端中命令输出的说明

linux - Jenkins Linux 文件访问或组问题