runtime

package
v0.21.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package runtime 提供节点本地非 JDK 运行时(首批 Node.js)的下载安装与托管删除(FR-299)。

设计目标(见 docs/specs/node-runtime-library/spec.md §3.2「FR-299 Node 安装器」):

  • InstallNodeJS 从 nodejs.org dist(镜像可配)解析该 major 最新版本并下载便携归档, 解压到托管目录 <数据根>/opt/runtimes/nodejs-<major>;
  • 下载复用 jdk 包导出的 DownloadAndExtract 基建:同一出站 client 语义(FR-174/ADR-043)、 停滞看门狗判卡死(FR-290)、网络失败可操作引导(FR-279);
  • 残骸自愈(FR-291):完成标记 = node 可执行文件(bin/node | node.exe),无标记的 半截目录自动清除重装、有标记的完好目录拒绝覆盖;
  • Remove 删除归一到托管根下顶层子目录整体删除,拒绝根本身与根外路径(FR-292)。

所有操作只针对 Worker 本地文件系统;CP 通过 gRPC InstallRuntime/RemoveRuntime 触发, 结果经任务心跳终态写回 CP 侧 model.NodeRuntime 表。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Info

type Info struct {
	Type    string `json:"type"`
	Name    string `json:"name"`
	Version string `json:"version"`
	Major   int    `json:"major"`
	Arch    string `json:"arch"`
	// Path node 可执行文件绝对路径(与扫描器 nodejs 候选同语义,非目录)。
	Path    string `json:"path"`
	Managed bool   `json:"managed"`
}

Info Worker 本地安装出的运行时信息(对齐 CP node_runtimes 行)。

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager 维护 Worker 托管运行时目录(<数据根>/opt/runtimes)。 多协程安全:Install/Remove 串行化执行以避免并发解压冲突(同 jdk.Manager)。

func NewManager

func NewManager(rootDir string) *Manager

NewManager 创建运行时安装管理器。rootDir 是托管根(Install 写入 <rootDir>/nodejs-<major>)。

func (*Manager) InstallNodeJS

func (m *Manager) InstallNodeJS(ctx context.Context, major int, arch, mirrorBase string, progress Progress) (Info, error)

InstallNodeJS 下载并安装指定 major 的最新 Node.js 到 <rootDir>/nodejs-<major>(FR-299)。 arch 用 nodejs dist 命名(x64/arm64,CP 已按类型归一),空取本机推导; mirrorBase 非空作下载基址(CP 从平台设置 runtime.mirror.nodejs 下发),空回退 env/官方源。 返回的 Info.Path 为 node 可执行文件绝对路径(登记 node_runtimes.path 用)。

func (*Manager) Remove

func (m *Manager) Remove(path string) error

Remove 删除托管运行时目录(FR-292 语义与 JDK 齐平):登记路径可能是解压后嵌套的内层 (…/nodejs-22/node-v22.17.0-linux-x64/bin/node),归一到托管根下的顶层子目录整体删除; 托管根本身与根外路径一律拒绝。

func (*Manager) RootDir

func (m *Manager) RootDir() string

RootDir 返回托管根目录。

func (*Manager) SetHTTPClient

func (m *Manager) SetHTTPClient(c *http.Client)

SetHTTPClient 注入出站 client(经进程级代理,FR-174/ADR-037)。

func (*Manager) SetHTTPClientProvider

func (m *Manager) SetHTTPClientProvider(p func() *http.Client)

SetHTTPClientProvider 注入运行时出站持有者(FR-185/ADR-043):每次下载取当前 client, 使 CP 经心跳下发的代理改动即时生效。优先于 SetHTTPClient 注入的固定 client。

type Progress

type Progress = jdk.Progress

Progress 下载进度回调(percent 0~100,line 可选阶段日志),语义同 jdk.Progress。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL