Initial commit: rdgen with GitHub/Gitea dual build backend
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
"""
|
||||
构建后端抽象层:把 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()
|
||||
Reference in New Issue
Block a user