简体   繁体   English

Jenkins Windows ssh从属访问被拒绝

[英]Jenkins windows ssh slave access denied

I want to build my projects on a Windows machine, so I created a slave there. 我想在Windows机器上构建项目,所以我在那里创建了一个从属机器。 First we tried the standard java application runner, but our build sets up its own environment and it always ended up deleting the existing Java installation, not giving any proper error messages, but failing. 首先,我们尝试了标准的Java应用程序运行程序,但是我们的构建建立了自己的环境,并且最终总是删除现有的Java安装,没有给出任何正确的错误消息,但是失败了。 Then I switched to using Cygwin sshd and have Jenkins log in via ssh. 然后我切换到使用Cygwin sshd并让詹金斯通过ssh登录。 This works for the connection (just as the standard method worked), but when I ran the build then it failed again to install the jdk. 这适用于连接(就像标准方法一样),但是当我运行构建时,它再次无法安装jdk。 I ended up running the following command by hand: 我最终手动运行了以下命令:

C:\jenkins\tools\hudson.model.JDK\Latest\jdk.exe ADDLOCAL="ToolsFeature" REBOOT=ReallySuppress INSTALLDIR=C:\jenkins\tools\hudson.model.JDK\Latest /L

This is the same as Jenkins would run, but without the /s (silent) option. 这与Jenkins的运行方式相同,但没有/ s(静默)选项。 Now when I run the build, I get the following error: 现在,当我运行构建时,出现以下错误:

    Building remotely on jenkins-slave-win64 (Johnny5) (windows) in workspace C:\jenkins\workspace\continuous.xill
java.io.IOException: remote file operation failed: C:\jenkins\tools\hudson.model.JDK\Latest at hudson.remoting.Channel@200354fa:jenkins-slave-win64 (Johnny5): java.nio.file.AccessDeniedException: C:\jenkins\tools\hudson.model.JDK\Latest\bin\java.exe
    at hudson.FilePath.act(FilePath.java:987)
    at hudson.FilePath.act(FilePath.java:969)
    at hudson.FilePath.deleteRecursive(FilePath.java:1171)
    at hudson.tools.JDKInstaller.performInstallation(JDKInstaller.java:130)
    at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:68)
    at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:108)
    at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:206)
    at hudson.model.JDK.forNode(JDK.java:132)
    at hudson.model.AbstractProject.getEnvironment(AbstractProject.java:360)
    at hudson.model.Run.getEnvironment(Run.java:2234)
    at hudson.model.AbstractBuild.getEnvironment(AbstractBuild.java:935)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1036)
    at hudson.scm.SCM.checkout(SCM.java:485)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1277)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:610)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:532)
    at hudson.model.Run.execute(Run.java:1741)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:381)
Caused by: java.nio.file.AccessDeniedException: C:\jenkins\tools\hudson.model.JDK\Latest\bin\java.exe
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269)
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
    at java.nio.file.Files.delete(Files.java:1126)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at hudson.Util.deleteFile(Util.java:247)

Of course I tried everything: 我当然尝试了一切:

Run sshd as a different (Administrator) user Checked every error mentioned here: 以其他(管理员)用户身份运行sshd检查此处提到的每个错误:

here 这里

and here 和这里

And nothing works. 没有任何效果。 Do you have a hint where to look? 你有哪里可以找到的提示吗?

UPDATE: 更新:

Meanwhile I managed to get a bit further in the build process by deactivating the option to "Automatically install jdk" in the Jenkins settings, git clone works and gradle starts up. 同时,通过在Jenkins设置中停用“自动安装jdk”选项,我设法在构建过程中走得更远,git clone起作用并且gradle启动。 However, now the JAVA_HOME environment variable somehow is not accessible to the slave (although we even tried setting it in .bashrc, just to be sure). 但是,现在JAVA_HOME环境变量以某种方式无法被从属访问(尽管为了确定,我们甚至尝试在.bashrc中设置它)。 So the build fails with this message": 因此,构建失败并显示以下消息:

    FAILURE: Build failed with an exception.

* Where:
Script 'http://dl.bintray.com/content/shemnon/javafx-gradle/8.1.1/javafx.plugin' line: 60

* What went wrong:
A problem occurred evaluating script.
> Could not find JavaFX Packager Tools, please set one of [jfxrtDir in Gradle Properties, JFXRT_HOME in System Environment, JAVA_HOME in System Environment, java.home in JVM properties]

对于“更新”之后的构建错误,我认为您必须在“管理Jenkins”>“配置系统”>“ JDK”下添加JDK,或者在“管理Jenkins”>“全局工具配置”>“ JDK”下以较新版本添加。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM