侧边栏壁纸
博主头像
sirgo的博客 博主等级

每天进步一点点,一年之后你会看到巨大的变化

  • 累计撰写 58 篇文章
  • 累计创建 46 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

UNRAID-虚拟机-MacOS-开启启动脚本

sirgo
2024-08-03 / 0 评论 / 0 点赞 / 7 阅读 / 0 字

背景

最近使用Gitea-runner做gitea的持续构建, 需要构建Windows\Linux\Mac的各个平台的安装包,因此需要在macos上安装gitea-runner并自启动,这里进行记录MacOS如何设置启动脚本

环境

MacOS: BigSur虚拟机,虚拟机安装参见:

过程

以gitea-runner为例:

Gitea-runner安装过程
  1. 安装gitea-runner
    参考:https://gitea.com/gitea/homebrew-gitea
    执行:

    brew tap gitea/tap https://gitea.com/gitea/homebrew-gitea
    brew install act_runner
    mkdir /User/haofenglee/act_runner
    
  2. Act_runner注册 register
    参考:https://docs.gitea.com/zh-cn/1.20/usage/actions/act-runner#%E6%B3%A8%E5%86%8C

MacOS启动脚本
  1. 编写macos启动脚本

    cat > /Users/haofenglee/act_runner/startup.sh <<EOF
    #!/bin/zsh
    act_runner daemon
    EOF
    
    chmod 777 /Users/haofenglee/act_runner/startup.sh
  2. 编写MacOS服务XML
    (注意macos环境和windows的换行符不同,必要可在zsh下编辑)

    
    sudo cat > /Library/LaunchDaemons/act_runner.plist <<EOF<?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    
     <dict>
    
     <!-- Launch Daemon 不一定有权限访问所有需要的环境变量在没有权限的时候,启动项执行会失败,所以我们在这里配置一下脚本需要的环境变量 -->
    
     <key>EnvironmentVariables</key>
    
     <dict>
    
     <key>PATH</key>
    
     <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:</string>
    
     </dict>
    
     <key>Label</key>
    
     <!-- 习惯上,我们会用一个 identifier 样式的名字来作为启动项的名称 -->
    
     <string>act_runner</string>
    
     <key>Program</key>
    
     <!-- 要执行的脚本的绝对路径 -->
    
     <string>/Users/haofenglee/act_runner/startup.sh</string>
    
     <!-- 这个 key 告诉系统在启动的时候执行我们的脚本对于 daemons 来说是系统启动之后,对于 agent 来说则是用户登录之后 -->
    
     <key>RunAtLoad</key>
    
     <true/>
    
     <!-- 判断是按需启动我们的启动项,还是永远运行下去现在我们自己跑的是自己的脚本,按需启动就可以了 -->
    
     <key>KeepAlive</key>
    
     <true/>
    
     <key>LaunchOnlyOnce</key>
    
     <true/>
    
     <!-- 在调试脚本的时候很好用,可以指定脚本正常/错误输出的路径 -->
    
     <key>StandardOutPath</key>
    
     <string>/tmp/startup.stdout</string>
    
     <key>StandardErrorPath</key>
    
     <string>/tmp/startup.stderr</string>
    
    <key>UserName</key>
    
     <!-- 执行脚本的用户 -->
    
     <string>haofenglee</string>
    
    <key>WorkingDirectory</key>
    
     <string>/Users/haofenglee/act_runner</string>
    
     </dict>
    
    </plist>
    EOF
  3. 注册服务

    # -w 会把 plist 永久添加到 Launch Daemon 里面
    sudo launchctl load -w /Library/LaunchDaemons/com.file-service.plist
    
    # ...如果你不想让它自启动了
    sudo launchctl unload -w /Library/LaunchDaemons/com.file-service.plist

参考

https://davidleee.com/2018/11/07/login-items-for-macos/#:~:text=%E6%80%8E%E4%B9%88%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%BB%99%20macOS%20%E8%AE%BE%E7%BD%AE%E5%BC%80%E6%9C%BA%E5%90%AF%E5%8A%A8%E4%BB%BB%E5%8A%A1%201%20%E8%A6%81%E5%81%9A%E7%9A%84%E4%BA%8B%E6%83%85%20%E5%9B%A0%E4%B8%BA%20macOS%20%E7%9A%84%E5%90%AF%E5%8A%A8%E9%A1%B9%E6%98%AF%E9%80%9A%E8%BF%87%E4%B8%80%E4%B8%AA,launchctl%20start%20%E5%92%8C%20launchctl%20stop%20%E6%9D%A5%E6%8E%A7%E5%88%B6%E5%AE%83%E7%9A%84%E5%BC%80%E5%85%B3%EF%BC%8C%E4%B8%8D%E8%BF%87%E6%88%91%E4%BB%AC%E8%BF%99%E9%87%8C%E5%8F%AA%E6%98%AF%E6%89%A7%E8%A1%8C%E4%BA%86%E4%B8%80%E4%B8%AA%E8%84%9A%E6%9C%AC%EF%BC%8C%E5%B9%B6%E4%B8%8D%E4%BC%9A%E5%83%8F%E5%85%B6%E4%BB%96%E5%BA%94%E7%94%A8%E9%82%A3%E6%A0%B7%E9%95%BF%E9%A9%BB%EF%BC%8C%E6%89%80%E4%BB%A5%E5%85%B6%E5%AE%9E%E4%B9%9F%E5%B0%B1%E6%B2%A1%E6%9C%89%E2%80%9C%E5%BC%80%E5%85%B3%E2%80%9D%E4%B8%80%E8%AF%B4%E4%BA%86%E3%80%82%20%E5%8F%82%E8%80%83%E6%96%87%E7%AB%A0%20https://segmentfault.com/a/1190000043917222

0

评论区