SuperAPI AI 工具集

meo-deployments

部署与运维

查看项目

更新于 10-15 08:18

技能介绍

用途

该技能适用于 MEO(Multi-site Enterprise Operations)订阅,用于管理代码部署操作。部署代表在 MEO 环境中运行的代码部署过程,用户可通过该技能监控、停止或终止部署。

主要能力

  • 检查部署状态:查看运行中或已完成部署的状态,包括 pending、running、completed、failed、stopped、terminated,以及开始时间和错误信息。
  • 列出环境下的部署:支持分页和过滤,例如限制数量、按创建时间排序。
  • 优雅停止部署:发送停止请求,部署完成当前步骤后暂停。
  • 强制终止部署:立即终止部署进程,属于破坏性操作,需明确批准,可能导致站点处于部分部署状态。
  • 配置代码部署并发:获取或更新环境中并行部署的站点实例数量。
  • 启动部署:从环境资源发起,使用 acli api:v3:environments:create-deployment 命令,返回 deploymentId 用于跟踪。

使用方式

所有命令均使用 acli api:v3:* 格式。可通过 acli list api:v3:deployments 查看所有当前部署命令。

启动部署:

acli api:v3:environments:create-deployment <environmentId> <run_hooks> <code_reference>

示例:

# 部署 main 分支并启用钩子
acli api:v3:environments:create-deployment <environmentId> true refs/heads/main

# 部署标签且不启用钩子
acli api:v3:environments:create-deployment <environmentId> false refs/tags/1.5.0

# 部署并传递钩子参数
acli api:v3:environments:create-deployment <environmentId> true refs/heads/main \
  --hooks_argument="production"

检查部署状态:

acli api:v3:deployments:find <deploymentId>

列出环境部署:

acli api:v3:environments:list-deployments <environmentId>

支持分页和过滤:

acli api:v3:environments:list-deployments <environmentId> --limit=10 --sort=-created

停止部署:

acli api:v3:deployments:stop <deploymentId>

终止部署:

acli api:v3:deployments:terminate <deploymentId>

获取代码部署并发设置:

acli api:v3:environments:find-code-deploy <environmentId>

更新代码部署并发:

acli api:v3:environments:update-code-deploy <environmentId> <concurrency>

典型工作流

部署并监控:

# 启动部署
acli api:v3:environments:create-deployment <environmentId> true refs/heads/main

# 轮询完成状态(使用返回的 deploymentId)
acli api:v3:deployments:find <deploymentId>

CI/CD 流水线部署步骤:

#!/bin/bash
set -e

DEPLOYMENT=$(acli api:v3:environments:create-deployment \
  "$ENV_ID" true "refs/heads/$BRANCH" --no-interaction)

DEPLOYMENT_ID=$(echo "$DEPLOYMENT" | python3 -c "import json,sys; print(json.load(sys.stdin)['id'])")

# 轮询直到完成
while true; do
  STATUS=$(acli api:v3:deployments:find "$DEPLOYMENT_ID" | \
    python3 -c "import json,sys; print(json.load(sys.stdin)['status'])")
  echo "Deployment status: $STATUS"
  case "$STATUS" in
    completed) echo "Deployment succeeded"; exit 0 ;;
    failed|stopped|terminated) echo "Deployment failed"; exit 1 ;;
  esac
  sleep 15
done

适用场景

  • 需要监控 MEO 环境中代码部署的进度和状态。
  • 部署耗时过长或发现问题时,需要安全中断部署。
  • 部署卡住无响应时,需要立即终止。
  • 在 CI/CD 流水线中自动执行部署并轮询状态。
  • 调整环境中并行部署的站点实例数量。

限制

  • 仅适用于 MEO 订阅,不适用于其他平台。
  • 终止部署是破坏性操作,可能导致站点处于部分部署状态,执行前需确认。
  • 启动部署需从环境资源发起,而非部署资源。
  • 所有命令需通过 acli 工具执行。

相关主题

  • MEO 概述 — ACE 与 MEO 对比、数据模型
  • MEO 环境 — 启动部署、管理环境设置
  • MEO 代码库 — 查找要部署的 git 引用
  • MEO 站点实例 — 部署后验证站点实例状态