【问题标题】:How to install Hudson as a service on OS X?如何在 OS X 上安装 Hudson 作为服务?
【发布时间】:2011-04-12 13:13:18
【问题描述】:

运行hudson 很容易,但目前文档缺少在 OS X 上将运行的 hudson 作为守护程序/服务安装的教程。

当您切换到生产环境时,您需要确保它已正确配置和保护。

要求:

  • 能够在端口 80 上运行它
  • 不以 root 身份运行(或至少不以 root 身份运行作业)
  • 确保它在系统重新启动时正确启动/停止
  • 启用自动升级,可直接从 Web 界面运行。

最好有一个安装脚本来下载最新的 hudson 并安装它。

我们会将最佳答案整合到 Hudson wiki。

资源:

【问题讨论】:

  • 我认为这确实属于 Serverfault 或超级用户......这表示我计划关注这个问题:-)
  • 我希望你不是那些认为配置持续集成服务器是 IT 任务的人。如果我们将它移动到其中一台服务器上,我们就会杀死它。
  • 这可能对stackoverflow.com/questions/1157844/… 有所帮助,因为一旦 Tomcat 运行,Hudson 就可以正常运行。如果您想重用现有的 Apache 安装并将 Hudson 添加到其中,此tomcat.apache.org/connectors-doc/webserver_howto/apache.html 可能会有所帮助。
  • 我同意sal,将其部署到应用服务器,您的大部分观点都已解决。我也同意 prodigitalson,设置和保护 Hudson 服务器是 IT 的一部分,配置和使用是用户的任务(在这种情况下是开发人员或部署人员或 QA)。

标签: macos hudson jenkins


【解决方案1】:

如果您希望本地 Hudson 在您登录时在您的 Mac 上运行,试试这个。

你需要为它设置一个launchctl 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>UserName</key>
 <string>yourid</string>
 <key>Label</key>
 <string>Hudson</string>
 <key>EnvironmentVariables</key>
   <dict>
     <key>HUDSON_HOME</key>
     <string>/Users/yourid/.hudson</string>
   </dict>
 <key>ProgramArguments</key>
 <array>
 <string>/usr/bin/java</string>
 <string>-jar</string>
 <string>/Users/yourid/Hudson/hudson.war</string>
 </array>
 <key>RunAtLoad</key>
 <true/>
</dict>
</plist>

这假设您已将hudson.war 下载到~/Hudson 下的主目录,并且您希望自己运行它(可能是最好的决定。)请确保您定义了&lt;UserName&gt; 键,否则它将以 root 身份运行!

从登录开始

  1. 将以上内容另存为/Library/LaunchAgents/hudson.plist
  2. 第一次使用

    sudo launchctl load -w /Library/LaunchAgents/hudson.plist

或注销并重新登录,这将自动执行相同的操作。

重启后开始

  1. 将以上内容另存为/Library/LaunchDaemons/hudson.plist
  2. 第一次使用

    sudo launchctl load -w /Library/LaunchDaemons/hudson.plist

或者重启你的机器,它会自动做同样的事情。

重启 Hudson

Hudson 在 OS X 下无法自动重启,如果需要停止,请发出重启命令

launchctl unload -w path_to_plist

我发现有时它不会在第一次执行launchctl unload 时停止;在这些情况下,只需再次发出命令。

这将在端口 8080 下运行,就像您自己从命令行运行命令一样,使用内置在 .war 文件中的 Winstone 服务器。

我意识到这并没有专门回答“在端口 80 上运行”的问题,但对于在您自己的笔记本电脑上进行开发,我建议这是一个更好的选择。

【讨论】:

  • 感谢您的努力,但这种方法并不能解决几个要求:包括在系统重新启动时启动(不是登录!),端口 80,...
  • /Library 目录中的 LaunchAgents 在系统启动时启动。要在端口 80 上运行,请参阅 winstone 命令行选项:winstone.sourceforge.net/#commandLine
  • @jdkoftinoff 你的意思是 LaunchDaemons,而不是 LaunchAgents @Sorin-Sbarnea 那么它满足你的所有要求
  • 一种更好的方法(正如 James 上面提到的)是将 LaunchAgents 替换为 LaunchDaemons。这将在系统启动时以 root 身份运行该服务,而不是要求您登录并在您的用户下运行它。
【解决方案2】:

正确的解决办法是在tomcat里面安装hudson,让tomcat作为守护进程运行

这也将满足安全要求,让您轻松升级 hudson。

以下是 OS X 10.6 的完整指南: https://serverfault.com/questions/183496/full-guide-for-installing-tomcat-on-os-x/183527#183527

【讨论】:

  • 顺便说一句,一段时间后我决定用 Ubuntu 替换 OS X 作为服务器。更容易维护。
  • 在 Tomcat 中部署比较困难,并且不允许自动升级。唯一可能的优势是它更安全,但大多数构建机器一开始都是内部的,因此没有真正的安全风险。
【解决方案3】:

我的小解决方案(也从登录开始)是这样的: 首先手动运行一次 hudson(所以它构建它的 .hudson 目录)。 在 OSX 的机器上某处创建一个 hudson.command 文件,内容如下:

nohup java -jar .hudson/hudson.war --httpPort=8080 &

然后,打开系统首选项,选择您的用户,然后选择登录项。点击“+”按钮,就可以用finder选择命令了。

下次登录时,hudson 将启动。

缺点:

  • Hudson 没有特定用户 - 只有你自己
  • hudson 在 8080 端口
  • Hudson 重新启动意味着找到进程,将其杀死并再次启动 hudson.command 文件。
  • Hudson 仅在用户登录后才会启动。

【讨论】:

  • 我相信您的意思是“创建一个 hudson.command 文件”,而不是文件夹。
猜你喜欢
  • 2013-10-20
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 2010-11-15
相关资源
最近更新 更多