> ## Documentation Index
> Fetch the complete documentation index at: https://docs.veadk.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 发布

`release` 使用 `.agentkit/agentkit.yaml` 执行完整发布流程：生成发布配置、云端构建镜像、创建或更新 AgentKit Runtime，并按配置发布飞书、企业微信、钉钉代理或前端 BFF。若只使用根目录 `agentkit.yaml` 的生命周期配置，请使用 [`launch`](/productions/agentkit-cli/preview/zh/commands/launch)。

在应用项目根目录执行，先配置目标平台的管理凭证以及构建、镜像仓库、对象存储和运行时权限。此流程不会读取根目录生命周期配置中的模型环境变量；需要在 `.agentkit/agentkit.yaml` 的 `envs` 中显式声明

生成的 Python Dockerfile 默认启动 `main.py`。若入口文件不同，先修改 `.agentkit/Dockerfile` 的启动命令；项目已有根目录 Dockerfile 时优先使用该文件

## release

不带子命令时，`release` 执行完整流程。若当前项目没有 `.agentkit/agentkit.yaml`，命令会先生成配置并提示检查后再次执行。

| 标志/参数 | 说明 | 默认值 |
| - | - | - |
| `-n, --name <name>` | 配置阶段使用的运行时或应用名称。 | 当前目录名 |
| `-r, --region <region>` | 配置阶段使用的云区域。 | 云厂商默认区域 |
| `-p, --project <name>` | AgentKit 项目。 | `default` |
| `--im-feishu` | 运行时发布后发布飞书机器人代理。 | `false` |
| `--im-feishu-app-id <id>` | 飞书代理使用的 App ID。 | `im.feishu.app_id` 或 `FEISHU_APP_ID` |
| `--im-feishu-app-secret <secret>` | 飞书代理使用的 App Secret；推荐改用 `FEISHU_APP_SECRET`。 | `im.feishu.app_secret` 或 `FEISHU_APP_SECRET` |
| `--json` | 为托管 Harness Sidecar 发布输出机器可读的 NDJSON 事件。 | `false` |

<Warning>
  `release` 会创建或更新云端运行时，并可能创建 VeFaaS 函数、网关、镜像仓库、TOS 对象和身份相关配置。执行前确认 `.agentkit/agentkit.yaml`、凭证、区域和项目。
</Warning>

```bash lines theme={null}
agentkit release --name my-agent --region cn-beijing --project default
```

`--json` 仅用于已在 `.agentkit/agentkit.yaml` 中解析出 `harness_sidecar` 的托管 Sidecar 发布流程。标准发布配置使用该标志会返回失败结果。输出按行写入 JSON 事件，包含 `progress`、`runtime` 和最终 `result`，便于 Studio 或 CI 按阶段展示构建、部署和发布状态。

```bash lines theme={null}
agentkit release --json
```

## release config

生成 `.agentkit/agentkit.yaml` 与 Dockerfile。

| 标志/参数 | 说明 | 默认值 |
| - | - | - |
| `-n, --name <name>` | 运行时或应用名称。 | 当前目录名 |
| `-r, --region <region>` | 云区域。 | 云厂商默认区域 |
| `-p, --project <name>` | AgentKit 项目。 | `default` |
| `-f, --force` | 覆盖已有生成文件。 | `false` |

```bash lines theme={null}
agentkit release config --name my-agent
```

## release build

根据 `.agentkit/agentkit.yaml` 在云端构建镜像，并把构建产物写入 `.agentkit/artifacts/`。

启用托管 Harness Sidecar 时，SDK、ADK、MCP、Starlette 与 VeADK 使用托管基础镜像提供的兼容版本；应用只安装其余业务依赖。构建会校验平台依赖的版本边界，避免应用依赖覆盖托管运行环境

托管 Sidecar 构建必须使用当前 CLI 生成的 `.agentkit/Dockerfile`。如果项目使用用户自定义的根目录 `Dockerfile`，或旧版 `.agentkit/Dockerfile` 不符合当前托管构建结构，`release build` 会在构建前失败；重新运行 `agentkit release config --force` 可生成当前模板，执行前请先保留需要手动维护的 Dockerfile 修改。

云端构建需要先将构建上下文上传到 TOS。CLI 会根据压缩包大小设置上传超时，最短 120 秒，最长 10 分钟，并在连接重置、临时解析失败或超时等可重试网络错误后自动重试一次。托管 Sidecar 构建还会为 TOS bucket 读取检查启用一次瞬时错误重试，并使用启用缓存的专用 Code Pipeline；该流水线按托管基础镜像摘要隔离，避免与普通无缓存构建或其他基础镜像复用缓存。如果在 `infrastructure.code_pipeline.pipeline_id` 中显式指定流水线，托管 Sidecar 构建会先校验该流水线兼容当前构建契约，未找到或不兼容时直接失败，不会回退创建其他流水线。

| 标志/参数 | 说明 | 默认值 |
| - | - | - |
| *（无选项）* | 该子命令不接受任何选项。 | — |

```bash lines theme={null}
agentkit release build
```

## release apply

基于最新构建产物创建或更新运行时。

对于托管 Harness Sidecar 发布，`release apply` 会在运行时进入 `Ready` 后等待 `key_auth` APIG 绑定可用，再执行 Sidecar、已启用的模型代理和所需 MCP 网关校验。如果发布接口返回结果不明确，但运行时已经进入发布中或新版本已就绪，CLI 会继续按已观察到的运行时状态完成流程，避免重复触发发布。

当已有 Sidecar 运行时处于 `Error`，但当前版本仍是唯一可服务的 `Ready` 版本，且所有更新的版本都已经失败时，CLI 会保留当前服务版本并直接更新到新版本。若存在更新的非失败版本、多个可服务实例，或无法确认安全恢复条件，命令会失败并要求先显式处理该运行时。

| 标志/参数 | 说明 | 默认值 |
| - | - | - |
| *（无选项）* | 该子命令不接受任何选项。 | — |

```bash lines theme={null}
agentkit release apply
```

消息渠道与前端发布配置仍写在 `.agentkit/agentkit.yaml`，字段说明见 [agentkit.yaml](/productions/agentkit-cli/preview/zh/agentkit-yaml)。

## 发布等待与运行时角色

创建运行时时，显式指定的 IAM 角色必须存在；未指定角色时，CLI 优先复用具备 `AgentKitDefaultRuntimeAccess` 策略的角色，否则创建新角色。更新运行时会保留原角色，不自动修改已有角色策略；启用定时任务时所需的 TOS 前缀权限另行配置

发布等待运行时就绪的默认时间为 15 分钟，可用 `AGENTKIT_RUNTIME_READY_TIMEOUT_MS` 设置正整数毫秒值。运行时已发布但客户端超时时，先查看状态，避免重复创建资源

```bash lines theme={null}
AGENTKIT_RUNTIME_READY_TIMEOUT_MS=1200000 agentkit release apply
```

托管 Sidecar 支持北京区域和仅私有网络的网关绑定，也支持已有的 Header API Key 鉴权。构建成功后解析镜像摘要并写入产物记录；无法确认镜像已进入仓库时构建失败。构建结束会清理临时 TOS 源码包，成功构建后的清理失败也会使命令报错

配置生成仅写入本地文件；`release build` 成功表示产物已构建，`release apply` 成功表示发布流程完成。最后通过 `agentkit runtime show <name>` 确认状态，再验证实际调用。消息代理或前端发布失败时，先检查已经创建的运行时和函数，避免把完整流程失败理解为所有资源均未创建

`release config --force` 会覆盖生成的发布配置和适用的 Dockerfile，重新生成前保存自定义字段与修改
