You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Expo EAS有效提交链接用于Gchat通知?

解决Expo EAS提交后获取Submission ID并生成可点击链接的问题

问题根源

你当前用的eas-build-on-success是构建流程的成功钩子,而EAS_SUBMISSION_ID是提交流程专属的环境变量——构建流程里根本不会注入这个变量,所以自然拿不到。


解决方案

1. 切换到提交流程的专属钩子

Expo EAS针对提交流程提供了专门的钩子,需要在package.json里配置提交相关的脚本,覆盖成功和失败场景:

{
  "scripts": {
    "eas-submit-on-success": "node scripts/notify-submit-complete.js success",
    "eas-submit-on-failure": "node scripts/notify-submit-complete.js failure"
  }
}

2. 在脚本中正确获取提交变量并生成链接

提交流程的钩子触发时,Expo会自动注入以下关键环境变量:

  • EAS_SUBMISSION_ID:提交的唯一ID
  • EAS_SUBMISSION_PLATFORM:提交的平台(ios/android)
  • EAS_SUBMISSION_STATUS:提交状态(SUCCESS/FAILURE)

你可以用这些变量生成Expo Dashboard的提交详情链接,格式固定为:
https://expo.dev/accounts/[你的账户名]/projects/[你的项目名]/submissions/[EAS_SUBMISSION_ID]

脚本示例(同时处理成功/失败场景):

// 从环境变量和脚本参数获取信息
const platform = process.env.EAS_SUBMISSION_PLATFORM;
const submissionId = process.env.EAS_SUBMISSION_ID;
const submitStatus = process.argv[2]; // 接收success/failure参数

// 替换成你的实际账户名和项目名
const accountName = "your-account-name";
const projectName = "your-project-name";

// 生成提交链接
let submissionLink = "Submission link unavailable";
if (submissionId) {
  submissionLink = `https://expo.dev/accounts/${accountName}/projects/${projectName}/submissions/${submissionId}`;
}

// 构造Gchat通知消息
const gchatMessage = `
应用${submitStatus === 'success' ? '提交完成' : '提交失败'}:
平台:${platform}
提交详情:${submissionLink}
`;

// 这里调用你已实现的Gchat推送逻辑
// sendToGchat(gchatMessage);
console.log(gchatMessage);

3. 特殊场景:构建后自动触发提交的处理

如果你的流程是构建完成后自动触发提交,不建议在构建钩子中捕获提交ID(因为提交可能异步执行),最好还是用官方的提交钩子。如果一定要串联,可以在eas-build-on-success里调用eas submit --non-interactive,并通过命令输出提取Submission ID,但这种方式稳定性较差,优先推荐用提交钩子方案。


内容的提问来源于stack exchange,提问作者lindsaymacvean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:12:43