詹金斯:无法在外部硬盘驱动器上启动詹金斯

时间:2020-04-16 10:59:18

标签: macos jenkins macos-catalina

我让Jenkins在Mac Mini上运行。最近,我添加了一个外部硬盘驱动器,并将我的詹金斯数据移动到了该硬盘驱动器。到现在为止还挺好。一切正常。 但是昨天我更新到了Catalina,现在詹金斯将无法开始。如果我将数据移回Mac mini硬盘驱动器,它将开始没有问题。我想这是一个权利问题,但看来我拥有所有必要的权利。

有人可以帮忙吗?

一些信息... -在Mac mini上,只有一个用户:OLAV -Jenkins使用〜/ Library / LaunchAgents /中的plist文件启动(在用户目录中) -Jenkins的启动过程如下:launchctl load〜/ Library / LaunchAgents / org.jenkins-launch.plist

  • plist文件如下所示:

<key>EnvironmentVariables</key>
<dict>
    <key>JENKINS_HOME</key>
    <string>/Volumes/MacMiniEX/.jenkins</string>
</dict>
<key>Label</key>
<string>org.jenkins-launch</string>
<key>ProgramArguments</key>
<array>
    <string>/usr/libexec/java_home</string>
    <string>-v</string>
    <string>1.8</string>
    <string>--exec</string>
    <string>java</string>
    <string>-jar</string>
    <string>/Applications/jenkins/jenkins.war</string>
    <string>--httpListenAddress=0.0.0.0</string>
    <string>--httpPort=7070</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>Olav</string>
<key>StandardOutPath</key>
<string>/Users/Olav/desktop/stdout.log</string>
<key>StandardErrorPath</key>
<string>/Users/Olav/desktop/error.log</string>

  • 我得到的错误如下:

2020-04-16 10:48:43.562 + 0000 [id = 1]信息org.eclipse.jetty.util.log.Log#initialized:正在记录 已将@ 331ms初始化为org.eclipse.jetty.util.log.JavaUtilLog 2020-04-16 10:48:43.678 + 0000 [id = 1] INFO winstone.Logger#logInternal: 开始从战争文件中提取2020-04-16 10:48:43.705 + 0000 [id = 1]警告winstone.Logger#logInternal:无法删除目录 /Volumes/MacMiniEX/.jenkins/war java.nio.file.FileSystemException: /Volumes/MacMiniEX/.jenkins/war:不允许在以下位置进行操作 sun.nio.fs.UnixException.translateToIOException(UnixException.java:91) 在 sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) 在 sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) 在 sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:244) 在 sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:108) 在java.nio.file.Files.deleteIfExists(Files.java:1165)在 winstone.HostConfiguration.deleteRecursive(HostConfiguration.java:330) 在winstone.HostConfiguration.getWebRoot(HostConfiguration.java:265) 在winstone.HostConfiguration。(HostConfiguration.java:84)在 winstone.HostGroup.initHost(HostGroup.java:66)在 winstone.HostGroup。(HostGroup.java:45)在 winstone.Launcher。(Launcher.java:167)在 winstone.Launcher.main(Launcher.java:355)在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:498)在 Main.main(Main.java:151)的Main._main(Main.java:375)

2 个答案:

答案 0 :(得分:1)

我目前正在调查完全相同的问题。

我还没有合适的解决方案,但是我可以添加以下内容:

  1. 检查“ Mac设置”->“安全性和隐私”->“隐私”选项卡->“文件和文件夹”。我已将Java列为应用程序,并已授予可移动卷访问权限 Mac Settings 我也尝试过授予全部磁盘访问权限,但是没有运气。
  2. 检查控制台是否有沙盒错误 Console output
  3. 如果从“终端”命令行运行,则会收到权限提示。允许他们,詹金斯就会开始。从长远来看并不理想,因为每次重新启动包装盒时都需要执行该命令,但这有助于缩小问题的范围:

    / Library / Application \ Support / Jenkins / jenkins-runner.sh

(当我遇到自制软件安装问题时,我运行了本地的Jenkins安装程序)

答案 1 :(得分:0)

是的!谢谢@chrisoneiota提供的线索。卡塔琳娜(Catarina)的SIP阻止詹金斯未经批准使用外部硬盘驱动器,并且从不提示获得批准。所以-

对于通过自制程序安装的jenkins:

  1. 打开终端
  2. brew services jenkins-lts stop
  3. open /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/打开取景器窗口
  4. 系统偏好设置->安全和隐私->完整磁盘访问
  5. 单击锁以启用更改
  6. java_home从查找器窗口拖放到允许的列表中。
  7. brew services jenkins-lts start

您现在应该可以访问。

对我来说,关键的难题是弄清楚哪个Java可执行文件需要访问。不得不调查自制程序正在运行哪个命令(存储在/usr/local/opt/jenkins-lts/homebrew.mxcl.jenkins-lts.plist中),该命令指向一个符号链接,而指向上面的java_home。将符号链接添加到“安全和隐私”中无效;它必须是最终的路径。