---
url: /zh/build/internal-steps/vscode/go.md
description: |
  推迟云原生开发入口的出现时机， 用于让 WebIDE / VSCode 入口在指定流水线任务完成后才出现，如先装好依赖、拉起服务再开放入口。
---
`vscode:go`

**推迟云原生开发的进入入口**，让 WebIDE / VSCode 入口在指定的流水线任务执行完成后才出现。

**使用场景**：希望开发者进入云原生开发环境前先完成一段准备时使用——例如先装好依赖、
拉起服务再开放入口，避免进入后环境尚未就绪。它只影响入口出现的时机，不改变云原生开发本身是否可用。

云原生开发中是否配置该内置任务的区别：

* **使用该任务**：启动云原生开发时，需等待该任务执行完成，
  才会出现 WebIDE 和 VSCode/Cursor 客户端入口。
* **不使用该任务**：流水线 prepare 阶段执行完成（code-server 代码服务启动），
  stages 任务执行前，就会出现 WebIDE 和 VSCode/Cursor 客户端入口。

上述入口出现时机差异：仅指从 `loading` 等待页到跳转入口选择页出现的时机。
实际上无论是否使用该任务，在 `code-server` 代码服务启动后，云原生开发已处于可用状态。

**注意：使用该任务会增加等待时间。如需在某些任务执行完
才允许进入云原生开发环境，可使用该任务。**

* [适用事件](#vscode-go-applicable-events)
* [输出结果](#vscode-go-output)
* [配置样例](#vscode-go-configuration-examples)

## 适用事件 {#vscode-go-applicable-events}

* `vscode`
* `branch.create`
* `api_trigger`
* `web_trigger`

## 输出结果 {#vscode-go-output}

```json
{
  // webide url
  "url": ""
}
```

## 配置样例 {#vscode-go-configuration-examples}

```yaml title=".cnb.yml"
$:
  # vscode 事件：专供页面中启动云原生开发用
  vscode:
    - docker:
        # 使用自定义镜像作为开发环境，未传入此参数，
        # 将使用默认镜像 cnbcool/default-dev-env:latest
        image: cnbcool/default-dev-env:latest
      services:
        - vscode
        - docker
      stages:
        # 希望等该任务执行完再进入开发环境
        - name: 进入前准备
          script: ls -al
        - name: vscode go
          type: vscode:go
        # 可以在进入开发环境后再执行的任务
        - name: 进入后初始化
          script: ls -al
```
