开发者文档 指南

后台服务

响应项目状态变化的脚本: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 出的团队开箱即响应。