背景
最近使用Gitea-runner做gitea的持续构建, 需要构建Windows\Linux\Mac的各个平台的安装包,因此需要在macos上安装gitea-runner并自启动,这里进行记录MacOS如何设置启动脚本
环境
MacOS: BigSur虚拟机,虚拟机安装参见:
过程
以gitea-runner为例:
Gitea-runner安装过程
安装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_runnerAct_runner注册 register
参考:https://docs.gitea.com/zh-cn/1.20/usage/actions/act-runner#%E6%B3%A8%E5%86%8C
MacOS启动脚本
编写macos启动脚本
cat > /Users/haofenglee/act_runner/startup.sh <<EOF #!/bin/zsh act_runner daemon EOF chmod 777 /Users/haofenglee/act_runner/startup.sh编写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注册服务
# -w 会把 plist 永久添加到 Launch Daemon 里面 sudo launchctl load -w /Library/LaunchDaemons/com.file-service.plist # ...如果你不想让它自启动了 sudo launchctl unload -w /Library/LaunchDaemons/com.file-service.plist
评论区