---
url: /zh/build/timeout.md
description: |
  介绍云原生构建的超时策略， 包括流水线最长执行时间（20h）和 Job 任务的无输出超时（10min） 与最大超时时间（默认 2h，最大 12h）配置说明。
---
云原生构建中，每个流水线和任务都有最长执行时间，超时后自动终止。

## 流水线超时

流水线最长执行时间为 20 小时，超时后容器自动销毁。

## 任务超时

任务（Job）可通过声明 [`timeout`](./grammar.md#timeout) 自定义超时，
未声明时采用如下默认值。

> 对于 `npc:go` 等 Agent 任务，`timeout` 作用于 Agent 的**每一次工具执行**（如 bash 命令），而非整个 Agent 会话；
> 会话整体时长仍受[流水线超时](#流水线超时)约束。详见 [`npc:go` 超时说明](./internal-steps/npc/go.md#npc-go-timeout)。

### 无输出超时

若 Job 连续 **10 分钟**无任何输出，将触发超时。

若声明了 [`timeout`](./grammar.md#timeout)，则无输出超时时长与配置值一致。

### 最大超时时间

Job 默认最长执行 **2 小时**。

若声明了 [`timeout`](./grammar.md#timeout)，则按该值执行，最大不超过 **12 小时**。

### 配置示例

以下示例在 `push` 事件中声明一个任务，并将该任务的超时时间设置为 **30 分钟**：

```yaml title=".cnb.yml"
main:
  push:
    - stages:
        - name: build
          image: node:20
          script: |
            npm install
            npm run build
          timeout: 30m # 该任务最长执行 30 分钟，超时自动终止
```

声明 `timeout` 后，该任务：

* 连续 **30 分钟**无任何输出即触发无输出超时（取代默认的 10 分钟）；
* 最长执行 **30 分钟**，超时后自动终止。

> `timeout` 支持 `ms`、`s`、`m`、`h` 等单位，更多写法见[语法手册](./grammar.md#timeout)。
