mac上的jenkins slave在启动时失败了

roy*_*roy 5 unix macos jenkins launchctl jenkins-slave

我试图在mac mini上启动jenkins slave跟随 /Library/LaunchDaemons/com.jenkins.ci.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.jenkins.ci</string>
        <key>UserName</key>
        <string>jenkins</string>
        <key>SessionCreate</key>
        <true/>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/bin/java</string>
            <string>-Djava.awt.headless=true</string>
            <string>-jar</string>
            <string>/Users/jenkins/agent.jar</string>
            <string>-jnlpUrl</string>
            <string>http://jenkins2.domain.net:8080/computer/jenkins-mac/slave-agent.jnlp</string>
            <string>-secret</string>
            <string>23erft6yhujnhyujnbftyujbvcdrtyhbvcxswedaw</string>
            <string>-workDir</string>
            <string>"/Users/jenkins/jenkins_slave/"</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/Users/jenkins/error.log</string>
        <key>StandardOutPath</key>
        <string>/Users/jenkins/stdout.log</string>
    </dict>
    </plist>
Run Code Online (Sandbox Code Playgroud)

然后 sudo launchctl load /Library/LaunchDaemons/com.jenkins.ci.plist

但是在 /Users/jenkins/error.log

我知道了

    Exception in thread "main" java.io.IOException: The specified working directory should be fully accessible to the remoting executable (RWX): "/Users/jenkins/jenkins_slave/"
        at org.jenkinsci.remoting.engine.WorkDirManager.verifyDirectory(WorkDirManager.java:249)
        at org.jenkinsci.remoting.engine.WorkDirManager.initializeWorkDir(WorkDirManager.java:202)
        at hudson.remoting.Launcher.run(Launcher.java:300)
        at hudson.remoting.Launcher.main(Launcher.java:283)
Run Code Online (Sandbox Code Playgroud)

我已经打开了/Users/jenkins/jenkins_slave/777仍然得到这个错误.

如果我在mac上运行跟随jenkins用户,它的工作原理

/usr/bin/java -Djava.awt.headless=true -jar /Users/jenkins/agent.jar -jnlpUrl http://jenkins2.domain.net:8080/computer/jenkins-mac/slave-agent.jnlp -secret 23erft6yhujnhyujnbftyujbvcdrtyhbvcxswedaw -workDir "/Users/jenkins/jenkins_slave/"

谁知道这里有什么问题?

我在:

产品名称:Mac OS X
ProductVersion:10.14.1
BuildVersion:18B75

roh*_*mas 2

因此,它适用于“jenkins”用户的原因是因为 Jenkinsjenkins使用有权运行/访问 Jenkins(及其文件夹 - 在您的情况下-workDir "/Users/jenkins/jenkins_slave/")的用户创建了一个应用程序帐户。这就是为什么jenkins可以运行该命令,但当您尝试使用 sudo 运行它时却失败了。

为什么 sudo 会失败?

这主要是因为树中更高的目录你没有执行权限,所以即使使用777,你仍然无法运行它。

相反,对您希望访问的用户的目录执行chown或操作usermod

sudo usermod -a -G rohit git
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息https://askubuntu.com/questions/812513/permission-denied-in-777-folder