Activepieces Vercel 集成 Piece 实战指南:部署管理与环境变量自动化
2026/9/15 17:25:35 网站建设 项目流程

Activepieces Vercel 集成 Piece 实战指南:部署管理与环境变量自动化

【免费下载链接】activepiecesAI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents项目地址: https://gitcode.com/GitHub_Trending/ac/activepieces

本篇技术指南围绕 Activepieces 社区 Piece@activepieces/piece-vercel展开,讲解如何将 Vercel 的部署管理与环境变量操作接入 Activepieces 工作流。读完本文,你将掌握该 Piece 的认证配置方式、五个内置动作(列出项目、创建部署、查询部署状态、列出/写入环境变量)的参数含义与调用细节,并了解其底层 API 调用链与构建方法,可直接用于构建"代码推送后自动部署、部署完成后自动通知、批量同步环境变量"等自动化场景。

Piece 概览:一个面向部署与配置管理的 Vercel 集成

@activepieces/piece-vercel是 Activepieces 社区贡献的一个"有界 MVP(Bounded MVP)"版本 Vercel 集成,定位明确:只覆盖部署与环境变量这两条核心链路,不追求穷尽 Vercel 全部 API。其入口定义位于 packages/pieces/community/vercel/src/index.ts:

export const vercel = createPiece({ displayName: 'Vercel', auth: vercelAuth, minimumSupportedRelease: '0.36.1', description: 'Deploy projects and manage environment variables on Vercel.', categories: [PieceCategory.DEVELOPER_TOOLS], authors: ['atlas-hunter'], actions: [ listProjects, createDeployment, getDeploymentStatus, listEnvironmentVariables, upsertEnvironmentVariable, createCustomApiCallAction({ ... }), ], triggers: [], });

从源码结构可以推断出几个关键事实:

  • 最低支持版本minimumSupportedRelease: '0.36.1',意味着需要 Activepieces 0.36.1 及以上版本才能加载该 Piece;
  • 分类与作者:归入PieceCategory.DEVELOPER_TOOLS(开发者工具),作者为atlas-hunter
  • 额外能力:除五个固定动作外,还通过createCustomApiCallAction提供了一个自定义 API 调用动作,base URL 固定为https://api.vercel.com,并自动注入Authorization: Bearer <token>请求头,允许用户按需调用 Vercel 其他 REST 端点;
  • 无触发器:该 Piece 目前只提供动作(actions),triggers为空数组,适合作为流程中的执行节点而非事件源。

内置动作清单

动作名显示名称底层 Vercel API
list_projectsList ProjectsGET /v10/projects(带分页遍历)
create_deploymentCreate DeploymentPOST /v13/deployments
get_deployment_statusGet Deployment StatusGET /v13/deployments/{id}
list_environment_variablesList Environment VariablesGET /v10/projects/{projectId}/env
upsert_environment_variableUpsert Environment VariablePOST /v10/projects/{projectId}/env?upsert=true

认证配置:Personal Access Token 与团队作用域

连接 Vercel 需要先配置认证信息,其定义位于 packages/pieces/community/vercel/src/lib/common/auth.ts。该 Piece 使用PieceAuth.CustomAuth自定义认证,共三个字段:

字段类型必填说明
tokenSecretText(密文)Vercel Personal Access Token,在 Vercel 控制台 Settings → Tokens 中创建
teamIdShortTextVercel Team ID,用于操作团队(Team)拥有的资源
slugShortTextVercel Team Slug,当未提供 Team ID 时生效

值得注意的两个细节:

  1. Token 以密文存储token使用PieceAuth.SecretText,在 Activepieces 中会作为机密保存,不会在流程编辑界面明文回显;
  2. Team ID 优先级高于 Slug:源码中validate逻辑与请求构造逻辑一致——若同时填写了teamIdslug,只使用teamId;仅当teamId为空时才回退到slug

连接校验机制

配置连接时,Piece 会发起一次真实的 API 探测来验证凭证有效性(见 auth.ts):

validate: async ({ auth }) => { const queryParams: Record<string, string> = { limit: '1' }; if (auth.teamId) { queryParams['teamId'] = auth.teamId; } else if (auth.slug) { queryParams['slug'] = auth.slug; } await httpClient.sendRequest({ method: HttpMethod.GET, url: 'https://api.vercel.com/v10/projects', authentication: { type: AuthenticationType.BEARER_TOKEN, token: auth.token }, queryParams, }); return { valid: true }; }

即:连接保存时调用GET https://api.vercel.com/v10/projects?limit=1(附带teamIdslug),请求成功则连接有效,否则返回校验错误信息。因此Token 必须至少拥有读取项目列表的权限,否则无法建立连接。

团队作用域的自动注入

认证信息中的teamId/slug会在每次 API 调用时自动作为查询参数注入,其实现位于 packages/pieces/community/vercel/src/lib/common/client.ts:

if (auth.props.teamId) { queryParams['teamId'] = auth.props.teamId; } else if (auth.props.slug) { queryParams['slug'] = auth.props.slug; }

这意味着:只要在连接里配置了团队信息,所有动作(列表、部署、环境变量)都会自动作用于该团队,无需在每个动作里重复填写。对于"自定义 API 调用"动作,官方描述也提示:团队级请求仍需在 URL 或查询参数中手动补充teamIdslug

动作一:List Projects(列出项目)

定义于 packages/pieces/community/vercel/src/lib/actions/list-projects.ts,用于获取当前账号或团队下的全部 Vercel 项目。

  • 参数search(可选文本),按项目名称过滤;
  • 行为:调用GET /v10/projects,内部使用游标分页自动遍历所有结果,单页limit: 100,最多翻 10 页(见 client.ts 中的MAX_PAGES = 10),因此最多返回约 1000 个项目;
  • 幂等性:只读操作,aiMetadata.idempotent: true,可安全重试。

该动作的典型用途是"发现项目 ID / 名称"——在部署或管理环境变量之前,先用它枚举目标项目。返回的项目结构(VercelProject)包含idnameframeworklatestDeploymentslink(关联 Git 仓库信息)、updatedAtcreatedAt等字段。

此外,项目下拉组件(props.ts 中的vercelProjectDropdown)也复用了同一个listAllProjects函数:它支持搜索(refreshOnSearch: true),且未连接账号时会给出Connect your Vercel account first的禁用提示。

动作二:Create Deployment(创建部署)

定义于 packages/pieces/community/vercel/src/lib/actions/create-deployment.ts,这是本 Piece 最复杂的动作,支持两种部署来源模式,通过deployment_source下拉切换:

模式一:Redeploy(重新部署已有部署)

选择历史部署记录,基于它重新触发部署。动态字段(Property.DynamicProperties按需渲染):

字段类型必填说明
deployment_idDropdownGET /v6/deployments?projectId=xxx&limit=100拉取该项目的部署历史,下拉标签格式为url (state · target)
with_latest_commitCheckbox勾选后使用最新提交而非原部署文件重新部署(对应withLatestCommit: true

请求体构造为:

{ "name": "<projectId>", "project": "<projectId>", "deploymentId": "<deployment_id>", "withLatestCommit": true }

模式二:Git Source(从 Git 仓库部署)

直接指定 Git 来源触发部署。公共字段:

  • target:目标环境,默认preview,可选productiondeploymentTargetProperty);
  • git_type:Git 提供商,可选githubgithub-limitedgitlabbitbucket,默认github
  • git_branch:要部署的分支/ref(必填);
  • git_sha:可选提交 SHA;
  • git_repo_org/git_repo_name:仓库归属与仓库名(GitHub 用 org/owner + repo;Bitbucket slug 模式用 owner + slug);
  • git_repo_id:GitHub repoId 或 GitLab projectId 模式;
  • git_repo_uuid/git_workspace_uuid:Bitbucket UUID 模式专用。

不同提供商对参数的校验规则(源码中均有显式错误提示):

  • GitHub:提供git_repo_id,或同时提供git_repo_org+git_repo_name,二选一;否则抛错For GitHub deployments, provide either Repository ID or both Repository Organization and Repository Name.
  • GitLab:必须提供git_repo_id(作为 projectId);
  • Bitbucket:提供git_repo_uuid(可附加git_workspace_uuid),或提供git_repo_org+git_repo_name(作为 owner + slug),二选一。

顶层通用选项

  • force_new:Checkbox,默认关闭。勾选后在请求查询参数中追加forceNew=1,即使存在相似的旧部署也强制新建;
  • skip_auto_detection_confirmation:Checkbox,默认开启,对应skipAutoDetectionConfirmation=1,自动确认框架检测而不弹出确认。

最终请求为POST /v13/deploymentsnameproject均取所选项目的 ID。该方法非幂等aiMetadata.idempotent: false),每次调用都会启动一次独立部署,不适合无谓重试。

动作三:Get Deployment Status(获取部署状态)

定义于 packages/pieces/community/vercel/src/lib/actions/get-deployment-status.ts,用于拉取单个部署并检查其当前状态(如buildingreadyerror)。

  • 参数
    • project:项目下拉,必填;
    • deployment:部署下拉,基于所选项目从GET /v6/deployments动态加载,必填;
    • with_git_repo_info:Checkbox,默认开启,请求时附带withGitRepoInfo=true以包含 Git 仓库信息;
  • 底层调用GET /v13/deployments/{deploymentId},部署 ID 会经过encodeURIComponent处理;
  • 幂等性:只读,idempotent: true

典型用法是配合 Create Deployment 使用:创建部署后取出返回的uid,在轮询循环或定时流程中反复调用本动作,直到状态变为readyerror,再触发后续通知(如 Slack 消息、邮件)。

动作四:List Environment Variables(列出环境变量)

定义于 packages/pieces/community/vercel/src/lib/actions/list-environment-variables.ts,读取指定项目已配置的环境变量。

  • 参数
    • project:项目下拉,必填;
    • decrypt:Checkbox,默认关闭。注意源码注释明确指出该参数已被 Vercel 官方标记为 deprecated——若开启,Vercel 在允许的情况下会尝试返回解密后的值;
    • git_branch:可选分支过滤,仅对 preview 作用域的环境变量有效
  • 底层调用GET /v10/projects/{projectId}/env,查询参数decrypt=true(可选)与gitBranch(可选);
  • 幂等性:只读,idempotent: true

动作五:Upsert Environment Variable(创建/更新环境变量)

定义于 packages/pieces/community/vercel/src/lib/actions/upsert-environment-variable.ts,通过 Vercel 的 upsert API 以变量名(key)为键执行"存在则更新、不存在则创建"。

字段类型必填说明
projectDropdown目标项目
keyShortText环境变量键名
valueLongText环境变量值
typeStaticDropdown变量类型:plain(默认)/sensitive/encrypted
targetMultiSelect作用环境:productionpreviewdevelopment,默认三者全选
git_branchShortText可选分支,仅当 target 中包含preview时允许
commentShortText变量用途备注

关键行为与校验:

  1. 请求地址POST /v10/projects/{projectId}/env?upsert=true,通过upsert=true查询参数启用覆盖语义;
  2. 分支校验:若填写了git_branch但 target 列表不含preview,源码会直接抛错:Git Branch can only be used when Preview is included in Target Environments.
  3. 请求体示例
{ "key": "API_KEY", "value": "sk-xxx", "type": "sensitive", "target": ["production", "preview", "development"], "gitBranch": "main", "comment": "injected by Activepieces" }
  1. 幂等性idempotent: true——相同 key 与值重复执行,最终存储结果一致,适合在流程中安全重试。

底层调用链与通用客户端

所有动作都通过统一的vercelApiCall客户端函数(client.ts)发起请求,其行为归纳如下:

  • Base URLhttps://api.vercel.com
  • 认证:统一使用AuthenticationType.BEARER_TOKEN,请求头为Authorization: Bearer <token>Content-Type: application/json
  • 团队注入:自动追加teamId(优先)或slug查询参数;
  • 空值清理query对象中undefinednull、空字符串会被剔除,不会进入最终查询参数;
  • 返回结构:直接返回响应体response.body,动作层无需再解析。

该统一封装保证了五个动作(以及自定义 API 调用动作)的认证行为完全一致,任何 Token 或团队配置的变更都会在全局生效。

构建与包信息

该 Piece 是独立的 npm 包,包名为@activepieces/piece-vercel,版本0.1.0,依赖@activepieces/pieces-common@activepieces/pieces-framework@activepieces/core-piece-types@activepieces/core-utils(均为 workspace 引用)。其 package.json 位于 packages/pieces/community/vercel/package.json。

原文档给出的构建命令为:

turbo run build --filter=@activepieces/piece-vercel

包内还定义了其他脚本:buildtsc -p tsconfig.lib.json && cp package.json dist/)、bundle(调用 CLI 的 pieces bundle)、lint(ESLint 检查src/**/*.ts)。

目录结构与国际化

Piece 源码采用清晰的分层组织:

packages/pieces/community/vercel/ ├── src/ │ ├── index.ts # Piece 入口(createPiece 注册) │ ├── lib/ │ │ ├── actions/ # 五个动作 + 导出入口 │ │ │ ├── create-deployment.ts │ │ │ ├── get-deployment-status.ts │ │ │ ├── index.ts │ │ │ ├── list-environment-variables.ts │ │ │ ├── list-projects.ts │ │ │ └── upsert-environment-variable.ts │ │ └── common/ │ │ ├── auth.ts # 认证定义与连接校验 │ │ ├── client.ts # 统一 API 客户端与分页逻辑 │ │ └── props.ts # 共享属性(项目下拉、target 下拉等) │ └── i18n/ # 多语言翻译(de/es/fr/ja/nl/pt/zh 等) ├── README.md └── package.json

i18n/目录提供了包括德语、西班牙语、法语、日语、荷兰语、葡萄牙语、中文在内的多语言翻译文件,说明该 Piece 遵循 Activepieces 的国际化规范,界面文案可随平台语言切换。

典型自动化场景示例

基于上述动作,可以在 Activepieces 中搭建以下工作流:

  1. CI/CD 后置处理:Webhook 触发(如 Git 推送)→ Create Deployment(Git Source 模式,指定分支与 GitHub 仓库)→ Get Deployment Status(轮询直至ready/error)→ 分支判断后发送通知;
  2. 环境变量同步:从配置源(如数据库或表格)读取键值 → Upsert Environment Variable(批量写入多个项目)→ List Environment Variables 校验结果;
  3. 项目巡检:定时触发 List Projects → 遍历每个项目的部署状态与环境变量清单 → 汇总报告。

需要注意的是:部署创建动作非幂等,涉及敏感值的value字段建议使用 Activepieces 的变量或连接机制管理,避免明文硬编码在流程中。

小结

@activepieces/piece-vercel以最小但完整的形态覆盖了 Vercel 最常用的部署与环境变量管理能力:统一的 Bearer Token 认证、可选的团队作用域注入、带分页的项目/部署枚举、双模式部署创建(redeploy 与 Git Source)、以及幂等的环境变量 upsert。配合自定义 API 调用动作,它既能完成高频的标准化操作,也能在需要时透传访问 Vercel 的其他端点,是 Activepieces 中接入 Vercel 工作流的基础组件。

【免费下载链接】activepiecesAI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents项目地址: https://gitcode.com/GitHub_Trending/ac/activepieces

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询