java.nio.file.AccessDeniedException 在 Jenkins 中使用自定义工作区时出错和 运行 基于 TestNG 的 Selenium 测试的 shell 脚本

java.nio.file.AccessDeniedException error when using custom workspace in Jenkins and running the shell script of TestNG based Selenium tests

我想 运行 Jenkins 中的 testng.xml 文件。我正在使用自定义工作区,并添加了 Execute Shell 作为构建步骤。

我正在编写以下命令来执行 Shell:

java -cp "./*:bin" org.testng.TestNG testng.xml 

所有必需的 jar 文件和 testng.xml 文件都在 /home/wonderbiz/Documents/JarFolder

当我现在点击构建时,出现了这个异常。

运行 命令作为 root 用户或 更改您要访问的根目录的权限,例如这里 /home/wonderbiz/Documents/JarFolder 所以使用命令

$ sudo su
# chmod -R 777 /home

但我建议您创建自己的目录,然后修改该目录的权限。 例如

# mkdir /demo

将所需文件复制到该目录(/demo)并进行配置设置然后尝试运行.

这个错误信息...

java.nio.file.AccessDeniedException: /home/wonderbiz/Documents
    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
    at sun.nio.fs.UnixFileSystemProvider.checkAccess(UnixFileSystemProvider.java:308)
    at java.nio.file.Files.createDirectories(Files.java:746)
    at hudson.FilePath.mkdirs(FilePath.java:3239)

...意味着 Jenkins 无法 access/create 子目录 /home/wonderbiz/Documents

在以下提到的 either/all 个案例中可能会出现此问题:

  1. checkAccess 错误通常是由于权限不足或其他进程锁定文件造成的。在这个用例中,Jenkins 尝试访问失败的文件夹似乎已经存在。该文件夹和下面的所有文件甚至在触发执行之前就已经存在。
  2. 父目录 (/home/wonderbiz/Documents) 需要至少 rx 非所有者才能列出其内容,并且 w 才能在那里进行更改,无论子目录权限。更改/home/wonderbiz/Documents/JarFolder目录的权限

    chmod -R 777 /home
    
  3. 更好的方法是创建专用目录,例如。在 /opt 中并使用它。

  4. 这个问题也会发生,因为 Jenkins 没有权限在 /home/wonderbiz/Documents 子目录中执行作业。转到 Jenkins 配置文件(Red Hat - /etc/sysconfig/jenkins),然后查看你使用哪个用户访问 运行 Jenkins)。要解决这个问题,您需要将作业的所有者更改为 jenkins 用户:

    sudo chown -R jenkins:jenkins /home/wonderbiz/Documents (need to restart Jenkins)
    
  5. 看起来 os 用户 运行ning jenkins 没有对整个工作区目录或工作区目录中的某些文件的写入权限。


结尾

您可以在

中找到相关讨论