ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

no-mistakes服务化安装:launchd/systemd/schtasks三平台渲染

no-mistakes服务化安装:launchd/systemd/schtasks三平台渲染 no-mistakes服务化安装launchd/systemd/schtasks三平台渲染【免费下载链接】no-mistakesgit push no-mistakes项目地址: https://gitcode.com/GitHub_Trending/no/no-mistakesno-mistakes 是一款 git push 驱动的自动化代码校验工具它的核心是常驻后台的 daemon 守护进程。安装时no-mistakes 会自动渲染并注册系统级托管服务macOS 用 launchd LaunchAgent、Linux 用 systemd 用户服务、Windows 用计划任务schtasks全程无需手动编写任何服务文件一条daemon restart即可完成服务化安装。为什么需要服务化安装daemon 是 no-mistakes 的长驻进程git push no-mistakes之后git hook 只需通知 daemon 就立即退出真正耗时的 worktree 创建、流水线执行、CI 监控、崩溃恢复全部由 daemon 在后台完成。如果 daemon 只是普通进程关终端就没了、崩溃后没人拉起、更新二进制后要手动重跑。托管服务解决这三个问题开机/登录自启登录系统后 daemon 自动就位崩溃自愈launchd 的KeepAlive与 systemd 的Restartalways保证进程退出后自动拉起无感更新no-mistakes update替换二进制后通过重启托管服务让新可执行文件生效官方文档对这部分有完整说明docs/src/content/docs/concepts/daemon.md三平台各自的渲染产物安装器根据操作系统分派到三条安装路径统一入口在 internal/daemon/service.go 的installManagedServiceWithExecutable。macOSlaunchd LaunchAgent渲染产物是一个 plist 文件写入~/Library/LaunchAgents/com.kunchenguid.no-mistakes.daemon.后缀.plist。模板见 internal/daemon/service_launchd.goProgramArguments固定为可执行文件 daemon run --root NM_HOMERunAtLoadKeepAlive实现登录自启和崩溃拉起WorkingDirectory指向 NM_HOME 根目录标准输出/错误重定向到~/.no-mistakes/logs/daemon-bootstrap.log启动时走launchctl bootout→bootstrap→kickstart -k三步。由于 launchctl 的 bootout 是异步的bootstrap 可能撞上 errno 37EPROGRESS代码内置了 10 秒窗口的自动重试internal/daemon/service_launchd.goLinuxsystemd 用户服务渲染产物是~/.config/systemd/user/no-mistakes-daemon-后缀.serviceunit 模板见 internal/daemon/service_systemd.goTypesimpleExecStart同样指向daemon run --root NM_HOMERestartalwaysRestartSec2提供崩溃自愈[Install]段WantedBydefault.target登录后随用户会话自动启动安装流程依次执行daemon-reload和systemctl --user enable重启前还会reset-failed清掉 crash-loop 残留状态。Windows计划任务 schtasks渲染产物不落盘为文件而是直接通过schtasks /Create注册见 internal/daemon/service_schtasks.go/SC ONLOGON登录时触发/RL LIMITED以普通权限运行任务命令为no-mistakes.exe daemon run --root NM_HOME查询状态时通过 PowerShell 的Get-ScheduledTask解析 State 判定运行中/已退出一个刻意的设计Windows 路径不转发代理环境变量。因为 ONLOGON 任务运行在用户的交互登录会话里天然继承会话环境包括HTTP_PROXY等无需把可能含凭据的代理地址写进任务定义也就没有泄露风险。渲染机制中的三个通用细节1️⃣ 服务标识按安装隔离launchd 标签、systemd 单元名、Windows 任务名都带一个由sha256(NM_HOME 根目录)派生的 8 位稳定后缀。这让同一台机器上多个不同NM_HOME的 no-mistakes 安装可以并存互不覆盖也不会误杀别的安装的 daemon。实现见 serviceInstanceSuffix。2️⃣ 代理环境转发与凭据保护launchd/systemd 拉起的进程只有极简环境。若你在安装时配置了代理渲染器会把HTTP_PROXY、https_proxy等变量烘焙进服务定义保证 daemon 及其派生的 agent 能走代理上网。一旦文件里含代理值落盘权限自动收紧为0600并采用临时文件 原子改名写入凭据从头到尾对其他用户不可见writeServiceFile。3️⃣ 兜底与自愈托管服务安装或启动失败时自动降级为 detached 守护进程安装流程仍然成功新版本会检测并清理旧版本遗留的全局命名服务先停止再删除避免新旧两套 daemon并存服务定义中的PATH由已知 bin 目录按用户目录优先顺序拼出保证go、cargo、Homebrew 工具都能被找到常用命令速查命令作用no-mistakes daemon start安装如缺失并启动托管服务no-mistakes daemon stop停止 daemon不删除服务定义no-mistakes daemon restart重启安装脚本 docs/install.sh 末尾即调用此命令no-mistakes daemon status查看 daemon 与服务状态no-mistakes update校验 SHA-256 后原子替换二进制并重启服务CLI 侧封装在 internal/cli/daemon_cmd.go安装方式一览见 安装文档。小结你不需要理解任何 plist/unit/schtasks 语法——no-mistakes 按平台渲染、按 NM_HOME 隔离、含凭据自动收紧权限、失败自动降级。装好之后git push no-mistakes就可以在任何终端、任何登录会话中稳定触发后台流水线了。【免费下载链接】no-mistakesgit push no-mistakes项目地址: https://gitcode.com/GitHub_Trending/no/no-mistakes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表