开发者文档 指南
后台服务
响应项目状态变化的脚本:on_change 约定、触发范围,以及运行如何被记录。
什么是后台服务
后台服务把脚本(Python 或 TypeScript)绑定到工作区。它不靠计划或手动触发,而是响应式工作:项目状态中的响应式 store 一旦变化,平台就会带着变更内容运行该服务的 on_change 处理器。
on_change 约定
在服务脚本里定义 on_change(mutation, state)。它运行在工作区沙箱中,与任务脚本共享同一套注入的 workflow 模块——client、reporter、create_task 等——外加变更上下文:
def on_change(mutation, state) -> None:
# mutation: 触发本次运行的变更(含事件)
# state: 变更后的 store 快照
if state.get("stage") == "deploying":
reporter.set_phase("通知")
client.post("/projects/$PROJECT_ID/tasks", {
"identifier": "notifier",
"params": {"channel": state["channel"]},
})触发范围
| 设置 | 行为 |
|---|---|
| 监听的 store(空 = 全部) | 缩小哪些响应式 store 会触发本服务 |
| enabled | 暂停/恢复响应,无需删除定义 |
| 工作区 | 处理器运行所在的工作区 |
| 自定义镜像 | 处理器的可选运行环境 |
运行如何被记录
每次触发都是一次正式运行:平台记录真实的任务实例(不出现在看板),带阶段、日志与结果——打开服务的运行历史即可审计什么触发了什么。处理器内可用 BG_SERVICE_ID 与 ALLYBUILD_WORKSPACE_ID 标识服务上下文。
模板中的服务
服务定义是四大配置实体之一,随发布与 fork 一起打包——fork 出的团队开箱即响应。