feat(chv-guest): Gitea 同步变量经 seed 进 guest-env(执行器集成)
- 新增 cloud/chv/gitea_sync.py:6 键白名单,三源合并 (宿主 CHV_GITEA_* < 任务 gitea_sync < extra_env), 必填 4 键缺失即 fail-closed,空即不同步 - ssh_transport:GITEA_TOKEN 进密钥集(argv 拒绝),其余 5 键进 guest-env 集(split_guest_env) - hostkeys.write_seed:guest_env 与 secret_env 合并写同一 条目,仍无 runcmd、0600 - config:_gitea_fragment 产 gitea_sync_env(函数内 import, 叶子模块顶层只许标准库) - executor.wake_vm:起 VMM 前合并+校验(gitea_sync_incomplete), guest-env 随 seed 投递;provision_host_key 透传 guest_env - worker:_run_attempt 仅对 CHV 执行器把同步变量并进 gateway_env - 测试:cloud/tests/test_chv_gitea_sync.py 20 项 - 边界:tasks 表无 JSON 列,DB 往返丢任务 gitea_sync; 生产主来源是宿主 CHV_GITEA_* 环境变量
This commit is contained in:
1 parent
67ca0b86cd
commit
e7f699c62b
7 files changed
+785
-37
No files matched your search
@@ -2575,6 +2575,25 @@ class Worker:
|
||||
}
|
||||
return "sub2api", env
|
||||
|
||||
def _gitea_sync_env(self, task):
|
||||
"""Gitea 同步变量(CHV guest-env 集成):任务 gitea_sync
|
||||
覆盖宿主 CHV_GITEA_* 配置(见 gitea_sync.extract_...)。
|
||||
|
||||
只读本任务与本 worker 的 self._env(默认 os.environ),
|
||||
绝不硬编码任何值、不读其它任务、不写日志。返回空 dict
|
||||
即本次启动不同步;完整性校验不在这里做——执行器
|
||||
wake_vm 在起 VMM 前 fail-closed(gitea_sync_incomplete),
|
||||
worker 只负责把变量带进 extra_env。
|
||||
注意:tasks 表没有 JSON/元数据列,DB 往返会丢任务 dict
|
||||
的 gitea_sync;生产主来源是宿主 CHV_GITEA_* 环境变量。"""
|
||||
from cloud.chv.gitea_sync import (
|
||||
config_gitea_sync_env,
|
||||
extract_gitea_sync_env,
|
||||
)
|
||||
return extract_gitea_sync_env(
|
||||
task=task,
|
||||
config_sync=config_gitea_sync_env(self._env))
|
||||
|
||||
def _ensure_gateway(self, task):
|
||||
"""任务 dict 上的网关缓存:已算过直接取,否则算一次并存回。
|
||||
|
||||
@@ -4684,6 +4703,14 @@ class Worker:
|
||||
message="worker exec start: %s" % _exec_detail)
|
||||
try:
|
||||
gateway_provider, gateway_env = self._ensure_gateway(task)
|
||||
if isinstance(self.executor, CloudHypervisorExecutor):
|
||||
# CHV guest-env 集成:Gitea 同步变量随 extra_env
|
||||
# 进 wake_vm(密钥走 seed,boot 变量也走 seed;
|
||||
# 见 gitea_sync)。只对 CHV 合并——Docker/Local
|
||||
# 的密钥处理口径不同(-e/子进程环境),不在本轮
|
||||
# 改动,避免 GITEA_TOKEN 经其它通道外泄。
|
||||
gateway_env = _merge_env(
|
||||
gateway_env, self._gitea_sync_env(task))
|
||||
if self._use_popen():
|
||||
if goal_mode and task.get("_goal_resume_breakpoint"):
|
||||
# G10 断点:无 --goal-text,不开新循环。
|
||||
|
||||
Reference in new issue
Block a user