---
url: /zh/build/quick-start.md
---
`云原生构建` 为您提供开箱即用的 CI/CD 能力。其核心在于通过**声明式配置**：定义在特定**分支**发生特定**事件**时，自动执行一系列**任务**，轻松完成软件的集成与交付。

本文将引导您完成两个目标：

1. **创建并运行第一条流水线**：体验从代码提交到自动化构建的完整流程。
2. **编写实用的 PR 流水线**：学习配置用于代码质量守护的常见流水线。

***

## 第一部分：五分钟运行第一条流水线

### 第一步：创建仓库并进入开发环境

如果您还没有代码仓库，请先新建一个。创建成功后，点击页面的 `云原生开发` 按钮，快速创建一个开发环境。

![创建工作空间](/images/quick-start/workspace.zh.png)

选择 `WebIDE`，进入在线开发环境以便快速开始。

![选择WebIDE](/images/quick-start/choose-ide.zh.png)

### 第二步：创建并提交流水线配置文件

1. 在 WebIDE 中，于仓库根目录创建一个名为 `.cnb.yml` 的文件。

2. 将以下 YAML 配置复制到文件中并保存。此配置定义了：**当代码推送到 `main` 分支时，自动运行一个输出 "hello world" 的任务**。

   ```yaml title=".cnb.yml"
   # 分支名
   main:
     # 事件名
     push:
       # 要执行的任务
       - stages:
           - name: echo-hello
             script: echo "hello world"
   ```

3. 将本次修改**提交 (Commit) 并推送 (Push)** 到远程 `main` 分支。

![提交CI配置](/images/quick-start/add-ci.zh.png)

### 第三步：查看流水线执行结果

提交后，流水线将自动触发。

1. 返回您的仓库主页。
2. 点击 `云原生构建` 标签页，查看所有构建记录。
   ![构建列表](/images/quick-start/pipeline-push.zh.png)
3. 点击最新的一条记录（由 `push` 事件触发），查看详细的构建日志与状态。

恭喜！您已成功完成第一次 CI/CD 实践。

## 第二部分：编写一个实用的 PR 检测流水线

现在，我们来实现一个更真实的场景：**为 `main` 分支配置 Pull Request (PR) 流水线，用于自动执行代码检查 (lint) 和测试 (test)，并在失败时通知团队。**

让我们一步步拆解需求并转化为配置：

### 1. 定义分支和事件

首先，指定规则生效的分支 (`main`) 和事件 (`pull_request`)。

```yaml title=".cnb.yml"
main: # 分支名：规则仅在 main 分支生效
  pull_request: # 事件名：当发生 Pull Request 时触发
```

### 2. 定义流水线与任务

一个事件下可以并行执行多条流水线。此处我们定义一条名为 `pr-check` 的流水线，它包含两个**顺序执行**的任务 (`stages`)。

```yaml title=".cnb.yml"
main:
  pull_request:
    - name: pr-check # 流水线名称
      stages: # 定义主任务序列
        - name: lint # 任务1：代码检查
          script: echo "Running linting tools..." # 执行 lint 的脚本
        - name: test # 任务2：运行测试
          script: echo "Running test suites..." # 执行 test 的脚本
```

### 3. 定义失败处理

若主任务 (`stages`) 中**任一任务失败**，可通过 `failStages` 自动执行告警任务。

```yaml title=".cnb.yml"
main:
  pull_request:
    - name: pr-check
      stages:
        - name: lint
          script: echo "Running linting tools..."
        - name: test
          script: echo "Running test suites..."
      failStages: # 定义失败处理任务序列
        - name: notify-team # 任务：通知团队
          script: echo "Notifying the chat group that the PR check failed!"
```

**流水线执行逻辑：**

1. 监听 `main` 分支的 `pull_request` 事件。
2. 启动 `pr-check` 流水线。
3. 按序执行 `stages` 中的任务（lint → test）。
4. 若所有任务成功，流水线状态为通过。
5. 若任一任务失败，立即中止并转而执行 `failStages` 中的任务。

## 下一步

* 🔧 **深入了解配置**：查看[配置文件详解](./configuration.md)，探索更多高级功能。
* 📖 **掌握完整语法**：前往[语法手册](./grammar.md)了解所有配置项。
* 🚀 **参考真实案例**：需要更多灵感？请访问[最佳实践](https://cnb.cool/examples/showcase)，Fork 示例仓库或复用其配置，快速定制您的流水线。
