EN
Shopify 知识库 · 指南

Shopify App 的开发、Staging 与生产环境怎么隔离

给出 Shopify App 从本地开发、集成测试到正式发布的环境矩阵,说明 Partner 组织、App、Dev Store、配置文件、后端资源、密钥和发布权限分别应该怎样隔离。

Shopify App 的环境隔离通常不需要创建两个 Partner 组织。更常见的做法是在同一组织内使用不同 Shopify App、不同测试店铺和不同后端资源,分别承载开发、集成验证与生产流量。

Shopify CLI 支持一个代码库关联多个 App 配置,并通过具名配置选择不同的 development、staging 与 production App。管理 App 配置文件。

推荐的环境矩阵

环境Shopify App店铺后端资源主要用途
本地开发独立 development App开发者自己的 Dev Store本地服务与开发数据库快速迭代、制造测试数据
Staging独立 staging App固定集成 Dev Store独立域名、数据库、队列和密钥合并后的 OAuth、Webhook、Billing 与回归测试
Production正式 App真实商家店铺完全独立的生产资源对外服务

Dev Store 只能用于开发和测试:它不能用于生产,不能通过真实支付服务处理交易,也不能转换成生产店铺。Development stores。

哪些可以共用

  • 同一个代码仓库和主要业务模块。
  • 同一个 Partner 组织及成员管理体系。
  • 可复用的部署模板、数据库迁移和测试代码。
  • 不含环境取值的配置结构。

哪些不能共用

  • Shopify App 的 client ID、secret 与发布版本。
  • App URL、允许的 OAuth 回调地址和 Webhook 入口。
  • 数据库、缓存、对象存储与任务队列。
  • 第三方服务凭据和回调配置。
  • 日志、告警、审计记录与数据保留范围。
  • CI/CD 的部署权限和生产审批。
  • 用于验证安装流程的测试店铺。

“不同 App”只能隔离 Shopify 平台身份,不能自动隔离数据库和部署权限。反过来,只分数据库但共用同一个 Shopify App,也无法防止测试配置被发布到生产 App。

配置文件的使用方式

可以在一个代码库中维护具名配置:

shopify.app.development.toml
shopify.app.staging.toml
shopify.app.production.toml

Shopify 当前文档提供 app config link 创建或重新关联配置,用 app config use 切换本机默认配置,并允许在单条命令上通过 --config 显式选择目标。例如:

shopify app dev --config development
shopify app deploy --config staging
shopify app deploy --config production

官方并不要求把每份配置都提交到 Git:可以只提交生产配置,把个人开发配置放进 .gitignore。无论怎样取舍,secret 都不应写进配置文件——这是通用安全实践,不是该文档的规定。自动化环境必须用 --config 显式指定目标,不能依赖某位开发者本机通过 app config use 设定的默认值。

店铺命名

让名称长期表达产品、环境和用途:

product-dev-carl
product-staging
product-qa-billing
product-demo

个人开发店可以随时制造数据;固定 staging 店应保持可重复的基线;demo 或审核店则应保持整洁,方便录制材料和让外部审核者操作。不要用 prod 命名 Dev Store,以免让人误以为它承载真实交易。

从开发到生产的发布路径

  1. 功能分支在个人 Dev Store 完成开发验证。
  2. 合并后部署 staging 后端,并将对应 App 配置发布到 staging App。
  3. 在固定测试店验证安装、授权、权限变化、Webhook、计费、卸载和重装。
  4. 保存测试证据,人工批准生产发布。
  5. 将同一份已验证代码构建为生产制品,注入生产配置并部署。
  6. 发布生产 App 配置时,再次核对 scopes、回调地址和扩展版本。

Shopify CLI 的 app deploy 负责 Shopify 托管的 App 配置与扩展,不会替你部署应用后端;构建应用、准备数据库、设置环境变量并在托管服务上运行,是另一条流程。部署到托管服务。后端发布与 App 配置发布是两条链路,必须分别验收。

什么时候需要两个组织

只有当组织本身就是隔离边界时,两个组织才真正有意义,例如:

  • 测试和生产属于不同法律实体或最终所有者。
  • 外包团队可以接触测试资产,但不能加入生产组织。
  • 合规要求组织级权限、账务和审计完全分离。
  • 开发资产将整体交接给另一家公司。

否则,两个组织会增加成员、App 所有权、店铺和账务管理成本,却不能替代后端资源与凭据的环境隔离。

上线前检查

  • 每条 CI 命令都显式选择 Shopify 配置。
  • Staging 与 Production 的域名、数据库和密钥没有交叉引用。
  • 开发店没有安装生产 App,真实商家店没有安装开发 App。
  • 回调、Webhook 和应用首页均指向对应环境。
  • 生产发布需要独立审批,开发者本机默认配置不参与决策。
  • OAuth、权限变更、卸载重装和计费都在 staging 完成过真实流程验证。

环境隔离的目标不是增加配置文件数量,而是让测试失败不能污染生产身份、数据和商家体验。