Files

40 lines
1.3 KiB
Python

"""
构建后端抽象层:把 GitHub Actions / Gitea Actions 的触发、状态查询、
日志链接、连接测试收敛为统一接口,业务代码不再感知平台差异。
通过 app_settings 的 BUILD_PLATFORM(后台配置 → 环境变量 → 默认值)选择后端;
每个 GithubRun 记录自身 backend,切换平台后历史任务仍走原平台查询。
"""
from .. import app_settings
from .github import GitHubBackend
from .gitea import GiteaBackend
# 已支持的构建平台(Gitee Go 经评估不兼容,未纳入)
BACKENDS = {
'github': GitHubBackend,
'gitea': GiteaBackend,
}
PLATFORM_CHOICES = [
('github', 'GitHub Actions'),
('gitea', 'Gitea Actions(自建)'),
]
def current_platform():
"""返回当前生效的构建平台标识(非法值回退 github)。"""
name = app_settings.get_value('BUILD_PLATFORM').strip().lower()
return name if name in BACKENDS else 'github'
def get_backend(name=None):
"""按名称获取后端实例;name 为空时取当前配置平台。
后端实例无状态(每次调用实时读取设置),直接新建即可,
这样后台修改配置后无需重启即可生效。
"""
if not name:
name = current_platform()
cls = BACKENDS.get(name, GitHubBackend)
return cls()