如何将Vercel构建失败状态同步至Azure DevOps并实现团队通知?
可以实现,以下是两种主流实现方案:
方案一:Azure DevOps流水线同步执行Vercel部署并实时获取状态
这种方案让Azure DevOps直接调用Vercel CLI执行部署,等待部署结果返回,若失败则标记流水线为失败并触发通知。
配置Vercel环境变量
在Azure DevOps项目的「库」→「变量组」中添加以下变量:VERCEL_TOKEN:从Vercel账户设置→Tokens生成的访问令牌(需包含部署权限)VERCEL_PROJECT_ID:Vercel项目的ID(可在项目设置→General中查看)VERCEL_ORG_ID:Vercel组织/账户ID(可在账户设置→General中查看)
修改Azure DevOps流水线YAML
在流水线中添加安装Vercel CLI并执行部署的步骤,示例代码:steps: - script: npm install -g vercel displayName: '安装Vercel CLI' - script: vercel deploy --prod --token $(VERCEL_TOKEN) --yes displayName: '部署至Vercel' env: VERCEL_PROJECT_ID: $(VERCEL_PROJECT_ID) VERCEL_ORG_ID: $(VERCEL_ORG_ID)当Vercel部署失败时,该script步骤会返回非零退出码,Azure DevOps自动将流水线标记为失败。
配置团队通知
在Azure DevOps项目→「项目设置」→「通知」中新建通知规则:- 触发器选择「构建完成」
- 条件设置为「结果等于失败」
- 选择通知方式(邮件、Microsoft Teams、Slack等)及接收团队/个人
方案二:通过Vercel Webhook回调更新Azure DevOps流水线状态
这种方案适用于异步部署场景,Azure DevOps触发Vercel部署后继续其他任务,待Vercel完成部署后通过Webhook回调更新流水线状态。
配置Vercel Webhook
进入Vercel项目设置→「Webhooks」,添加回调URL(需指向能处理请求的服务,比如Azure Functions),触发事件选择「Deployment Completed」。处理Webhook并调用Azure DevOps API
编写服务解析Vercel发送的Webhook payload(其中status字段为ready表示成功,error表示失败),然后调用Azure DevOps REST API更新对应流水线的状态:- 生成Azure DevOps个人访问令牌(PAT),需包含「Build(读取和更新)」权限
- 示例API请求(curl):
curl -X PATCH \ https://dev.azure.com/{你的组织名}/{你的项目名}/_apis/build/builds/{流水线运行ID}?api-version=7.1-preview.7 \ -H "Authorization: Bearer {你的PAT}" \ -H "Content-Type: application/json" \ -d '{ "status": "failed", "result": "failed" }'
注:需要在触发Vercel部署时,将Azure DevOps的流水线运行ID传递给Vercel(比如通过环境变量
AZURE_BUILD_ID),以便Webhook回调时能定位到对应的流水线。配置团队通知
同方案一,在Azure DevOps中设置失败通知规则,当流水线被更新为失败状态时自动通知团队。
内容的提问来源于stack exchange,提问作者DemantCHRX

