You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS下如何让Homebrew安装的GitLab Runner用户服务开机自动启动?

macOS下如何让Homebrew安装的GitLab Runner用户服务开机自动启动?

我太懂你的困扰了——用普通用户身份启动GitLab Runner吧,重启机器后服务就自动停了;用sudo启动呢,又会导致所有Job都以root身份运行,完全不符合你的需求。要实现用户级服务开机自动启动(哪怕没人登录系统),得绕开brew services的默认逻辑,直接用macOS原生的launchd来配置,具体步骤如下:

  1. 先停掉当前的brew服务,避免冲突
    先把已经通过brew启动的GitLab Runner服务停掉:

    brew services stop gitlab-runner
    
  2. 创建自定义的launchd配置文件
    我们需要创建一个系统级的launchd守护进程配置,指定以你的普通用户身份运行。在/Library/LaunchDaemons/目录下新建一个名为com.gitlab.gitlab-runner.plist的文件(这个目录是macOS加载系统级开机服务的地方),内容如下:

    <?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.gitlab.gitlab-runner</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/bin/gitlab-runner</string>
            <string>run</string>
            <string>--working-directory</string>
            <string>/Users/你的用户名/gitlab-runner</string>
            <string>--config</string>
            <string>/Users/你的用户名/.gitlab-runner/config.toml</string>
        </array>
        <key>UserName</key>
        <string>你的用户名</string>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
        <key>StandardOutPath</key>
        <string>/var/log/gitlab-runner.log</string>
        <key>StandardErrorPath</key>
        <string>/var/log/gitlab-runner.err</string>
    </dict>
    </plist>
    

    注意把上面的你的用户名替换成你实际的Mac用户名,另外可以用which gitlab-runner命令确认gitlab-runner的执行路径是否正确,如果和示例里的/usr/local/bin/gitlab-runner不一样,记得同步修改。

  3. 设置配置文件的权限
    因为放在系统级目录,需要给文件设置正确的权限:

    sudo chown root:wheel /Library/LaunchDaemons/com.gitlab.gitlab-runner.plist
    sudo chmod 644 /Library/LaunchDaemons/com.gitlab.gitlab-runner.plist
    
  4. 加载并启动服务
    用launchctl加载这个配置文件,让系统开机时自动启动:

    sudo launchctl load /Library/LaunchDaemons/com.gitlab.gitlab-runner.plist
    
  5. 验证服务状态
    你可以用下面的命令检查服务是否成功启动:

    launchctl list | grep com.gitlab.gitlab-runner
    

    也可以查看日志确认运行情况:

    cat /var/log/gitlab-runner.log
    

为什么这个方法可行?

brew services默认的用户服务(不加sudo启动)是放在~/Library/LaunchAgents/目录下的,这种配置只有当用户登录后才会加载;而我们把配置放在/Library/LaunchDaemons/,属于系统级服务,开机就会自动加载,同时通过UserName字段指定了运行服务的用户,这样GitLab Runner就会以你的普通用户身份运行,提交的Job也不会用root执行,完美解决你的两个痛点。

需要注意的是,以后如果用brew更新GitLab Runner,记得检查一下配置文件里的ProgramArguments路径是否依然正确,避免因为更新导致路径变化而服务无法启动。

备注:内容来源于stack exchange,提问作者Guss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 11:04:40