我认为这是一个非常简单的问题但无法在任何地方找到解决方案。我必须运行我的jenkins plist文件(或只是.jar文件)作为jenkins,而不是管理员。这就是我的文件现在的样子:
<key>Label</key>
<string>com.example.ci</string>
<key>ProgramArguments</key>
<array>
<string>sudo</string>
<string>/usr/bin/java</string>
<string>-Djava.awt.headless=true</string>
<string>-jar</string>
<string>/Users/Shared/Jenkins/Home/slave.jar</string>
<string>-jnlpUrl</string>
<string>http://[adres]/slave-agent.jnlp
</string>
<string>-secret</string>
<string>841557ed784ead7secret[334b3ac76fe1618e375
</string>
</array>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/Users/Shared/Jenkins/Home/stdout.log</string>
<key>StandardErrorPath</key>
<string>/Users/Shared/Jenkins/Home/error.log</string>
我试图添加命令切换到jenkins:
sudo su jenkins
所以我尝试添加这样的东西:
<key>Jenkins user</key>
<string>what.to.put.here</string>
<key>OtherArguments</key>
<array>
<string>sudo</string>
<string>su</string>
<string>jenkins</string>
</array>
在上面这些行之前,但是我看到我还没有登录为jenkins。当我从命令行使用我编写的那些命令执行此操作时 - 比它工作,但我希望它在系统启动时运行。
修改
在 gaige 回答之后我添加了:
<key>UserName</key>
<string>jenkins</string>
但我仍然没有jenkins用户所拥有的目录的权限。
答案 0 :(得分:0)
如果您使用的是系统launchctl plist,那么您只需添加UserName
键:
<key>UserName</key>
<string>jenkins</string>
与plist中的其他键处于同一级别。然后删除所有sudo
相关内容。
请注意,这必须是系统启动的(位于/System/Library/LaunchDaemon
或/Library/LaunchDaemon
),否则您将无权使用相关用户。