部署 API 
本文档描述了 Trae 应用部署功能的 API 接口。
概述 
部署 API 提供了应用程序部署、环境管理、版本控制等功能,支持多种部署平台和策略。
端点 
创建部署 
http
POST /api/deployment/deploy请求参数 
| 参数 | 类型 | 必需 | 描述 | 
|---|---|---|---|
| project_id | string | 是 | 项目 ID | 
| environment | string | 是 | 部署环境 | 
| branch | string | 否 | 部署分支,默认为 main | 
| config | object | 否 | 部署配置 | 
| strategy | string | 否 | 部署策略 | 
响应 
json
{
  "deployment_id": "deploy_123",
  "project_id": "project_456",
  "environment": "production",
  "status": "pending",
  "created_at": "2024-01-01T00:00:00Z",
  "estimated_duration": 300,
  "url": "https://my-app-deploy-123.trae.app"
}获取部署状态 
http
GET /api/deployment/{deployment_id}/status响应 
json
{
  "deployment_id": "deploy_123",
  "status": "deploying",
  "progress": 65,
  "current_step": "building",
  "logs": [
    {
      "timestamp": "2024-01-01T00:00:00Z",
      "level": "info",
      "message": "开始构建应用..."
    },
    {
      "timestamp": "2024-01-01T00:01:00Z",
      "level": "info",
      "message": "构建完成,开始部署..."
    }
  ],
  "url": "https://my-app-deploy-123.trae.app"
}获取部署列表 
http
GET /api/deployment/list?project_id={project_id}&environment={environment}响应 
json
{
  "deployments": [
    {
      "deployment_id": "deploy_123",
      "environment": "production",
      "status": "success",
      "created_at": "2024-01-01T00:00:00Z",
      "completed_at": "2024-01-01T00:05:00Z",
      "url": "https://my-app.trae.app"
    }
  ],
  "total": 1
}回滚部署 
http
POST /api/deployment/{deployment_id}/rollback请求参数 
| 参数 | 类型 | 必需 | 描述 | 
|---|---|---|---|
| target_deployment_id | string | 否 | 目标部署 ID | 
| reason | string | 否 | 回滚原因 | 
响应 
json
{
  "rollback_id": "rollback_123",
  "status": "started",
  "target_deployment_id": "deploy_122",
  "reason": "发现严重 bug"
}停止部署 
http
POST /api/deployment/{deployment_id}/stop获取部署日志 
http
GET /api/deployment/{deployment_id}/logs?limit={limit}&offset={offset}响应 
json
{
  "logs": [
    {
      "timestamp": "2024-01-01T00:00:00Z",
      "level": "info",
      "message": "开始部署流程",
      "step": "initialization"
    },
    {
      "timestamp": "2024-01-01T00:01:00Z",
      "level": "info",
      "message": "正在拉取代码...",
      "step": "source"
    }
  ],
  "total": 50
}环境管理 
创建环境 
http
POST /api/deployment/environment请求参数 
| 参数 | 类型 | 必需 | 描述 | 
|---|---|---|---|
| name | string | 是 | 环境名称 | 
| project_id | string | 是 | 项目 ID | 
| config | object | 是 | 环境配置 | 
| auto_deploy | boolean | 否 | 自动部署 | 
响应 
json
{
  "environment_id": "env_123",
  "name": "staging",
  "project_id": "project_456",
  "config": {
    "domain": "staging.myapp.com",
    "instances": 2,
    "memory": "512MB"
  },
  "auto_deploy": true
}部署状态 
- pending- 等待中
- building- 构建中
- deploying- 部署中
- success- 成功
- failed- 失败
- cancelled- 已取消
- rolling_back- 回滚中
部署策略 
- rolling- 滚动部署
- blue_green- 蓝绿部署
- canary- 金丝雀部署
- recreate- 重建部署
示例 
部署到生产环境 
javascript
const response = await fetch('/api/deployment/deploy', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your-token'
  },
  body: JSON.stringify({
    project_id: 'my-project',
    environment: 'production',
    branch: 'main',
    strategy: 'rolling',
    config: {
      instances: 3,
      memory: '1GB',
      env_vars: {
        NODE_ENV: 'production',
        API_URL: 'https://api.myapp.com'
      }
    }
  })
});
const deployment = await response.json();
console.log('部署已启动:', deployment.deployment_id);
console.log('预览 URL:', deployment.url);监控部署进度 
javascript
const deploymentId = 'deploy_123';
const checkDeploymentStatus = async () => {
  const response = await fetch(`/api/deployment/${deploymentId}/status`);
  const status = await response.json();
  
  console.log(`部署进度: ${status.progress}%`);
  console.log(`当前步骤: ${status.current_step}`);
  
  // 显示最新日志
  if (status.logs.length > 0) {
    const latestLog = status.logs[status.logs.length - 1];
    console.log(`[${latestLog.level}] ${latestLog.message}`);
  }
  
  if (status.status === 'deploying') {
    setTimeout(checkDeploymentStatus, 5000); // 5秒后再次检查
  } else if (status.status === 'success') {
    console.log('部署成功!访问地址:', status.url);
  } else if (status.status === 'failed') {
    console.error('部署失败,请检查日志');
  }
};
checkDeploymentStatus();金丝雀部署 
javascript
// 第一步:部署到金丝雀环境
const canaryResponse = await fetch('/api/deployment/deploy', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your-token'
  },
  body: JSON.stringify({
    project_id: 'my-project',
    environment: 'production',
    strategy: 'canary',
    config: {
      canary_percentage: 10, // 10% 流量
      instances: 1
    }
  })
});
const canaryDeployment = await canaryResponse.json();
console.log('金丝雀部署已启动:', canaryDeployment.deployment_id);
// 等待金丝雀部署完成并验证
// ...
// 第二步:如果金丝雀测试通过,完成全量部署
const fullResponse = await fetch('/api/deployment/deploy', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your-token'
  },
  body: JSON.stringify({
    project_id: 'my-project',
    environment: 'production',
    strategy: 'rolling',
    config: {
      promote_from: canaryDeployment.deployment_id
    }
  })
});紧急回滚 
javascript
const rollbackResponse = await fetch(`/api/deployment/${currentDeploymentId}/rollback`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your-token'
  },
  body: JSON.stringify({
    target_deployment_id: 'deploy_122', // 回滚到上一个稳定版本
    reason: '发现性能问题,紧急回滚'
  })
});
const rollback = await rollbackResponse.json();
console.log('回滚已启动:', rollback.rollback_id);