Orbit
共享环境变量组
An environment variable group holds values that several Orbit projects need, such as a shared API key or a database credential, in one place. Link the group to the projects that need it and every…
环境变量组保存多个Orbit项目需要的值,例如共享的API密钥或数据库凭证,统一放在一个地方。将组链接到需要它的项目,其每次构建都会获得这些变量,因此轮换密钥只需编辑一次,而不是六次。
Env组的位置
打开Orbit并从顶级导航中选择Env groups。该页面标题为Shared env var groups,并将其描述为跨多个Orbit项目共享的账户级组。
组位于项目上方。项目自己的变量仍然位于其Env vars选项卡中,请参阅Environment Variables in Orbit。
何时使用组
测试很简单:是否在多个项目中粘贴了相同的值?
良好候选项:
- 每个前端使用的共享分析或错误追踪密钥。
- 多个内部工具使用的读取副本连接字符串。
- 整个账户都会调用的某个服务的第三方API密钥。
- 通用的功能标志客户端令牌。
不适合的候选项:
- 特定于某个项目的任何内容。它应该位于该项目上。
- 在生产和预览之间不同的任何内容。组不按环境划分,因此按环境变化的值应该位于项目自己的环境变量上。
创建组
- 点击New group。
- 给它一个Group name,最多64个字符。以它包含的内容命名,例如凭证所属的服务名称。
- 添加可选的Description。
- 点击Create group。
一个账户最多可以容纳20个组。当达到限制时,按钮显示**(limit reached)**,创建另一个会被拒绝。
创建、编辑和删除组需要账户上的所有者或管理员角色。开发者和查看者可以看到组但不能更改它们,这是有意的:组编辑会立即改变多个项目。
添加变量
打开组并使用Variables部分:
- 点击Add variable。
- 输入密钥和值。
- 对任何敏感内容勾选Mark as secret。
- 点击Save group。
标记为机密的变量被加密存储,其值在之后不会返回给面板。列表显示密钥和**Marked as secret (hidden)**指示器,而不是值。非机密值保持可见,以便您可以一目了然地检查它们。
将变量标记为机密意味着您无法从面板读取它。这是其目的,但这也意味着该组不是密码管理器。将权威副本保存在您的团队已经保存凭证的地方,并将该组视为分发机制。
要更改机密的值,输入新值并保存。要移除变量,点击其行上的Remove并保存。
链接项目
Linked projects部分列出账户中的每个项目。点击一个项目以链接或取消链接它;链接的项目会突出显示。保存组以应用。
没有链接项目的组没有作用,该部分在您链接一个项目之前显示No projects yet。
组变量在构建时注入,因此链接一个项目会影响其下一次构建,而不是当前活动的部署。如果您需要立即进行更改,请重新部署,请参阅Deploying Your Project。
优先级
规则在页面上说明:组变量在构建时注入,项目级和环境级变量优先于组变量。
换句话说,最具体的获胜:
- 环境级变量,最高优先级。
- 项目级变量。
- 组变量,最低。
这个顺序很有用,而不仅仅是技术细节。在组中设置共享默认值,并在需要不同内容的一个项目上覆盖它,而无需将该项目从组中移除。有关环境层,请参阅Environment Variables Per Environment。
它也解释了组最常见的混淆:您编辑组、重新部署,但没有任何改变,因为项目有自己的同名变量悄悄获胜。当组值似乎被忽略时,首先检查项目自己的Env vars选项卡。
轮换共享凭证
这是组存在的工作流:
- 在提供商处创建新凭证,保持旧凭证活跃。
- 编辑组中的值并保存。
- 重新部署每个链接的项目,或等待其下一次部署。
- 确认每个项目都在新凭证上工作。
- 在提供商处撤销旧凭证。
首先执行第5步会为您提供一个窗口,其中每个链接的项目立即断开,这正是共享凭证集中的风险。
删除组
点击组上的删除。确认会具体说明后果:未来的构建将失去这些变量,已完成的构建不会受到影响。
删除也会取消链接每个项目。这意味着运行的部署会继续使用它们构建时的值,每个链接项目的下一次构建则不会有这些变量。如果这些变量是必需的,该构建将失败或应用程序在运行时行为异常。
在删除之前,逐个取消链接项目并重新部署每个项目,这样您可以找出在所有项目都失去它之前,哪些项目实际上依赖于该组。
实用建议
保持组小而有目的。 每个外部服务一个组比一个巨大的"共享"组更好,因为它让您能够精确链接需要每样东西的项目。
在任何地方以相同方式命名密钥。 如果一个项目读取SENTRY_DSN,另一个读取SENTRY_KEY,共享组无法帮助您。首先标准化名称。
不要将生产凭证放在链接到具有公开预览的项目的组中。 组变量到达链接项目的每次构建,包括预览。
故障排除
构建看不到变量。 确认项目已链接并保存,以及构建在建立链接后运行。组变量从下一次构建开始应用。
运行时值错误。 同名的项目级或环境级变量正在覆盖它。检查项目的Env vars选项卡。
Create group不可用。 您已达到20个组的限制,或您的账户角色不是所有者或管理员。
机密的值显示为空白。 这是正确的。机密值在保存后不会返回给面板。
组编辑后项目断开。 在组中回滚值并重新部署,然后找出哪个项目不同意。Rolling Back a Deployment在您进行此操作时让运行的站点保持健康。
下一步
- Environment Variables in Orbit,用于项目级变量。
- Environment Variables Per Environment,用于覆盖层。
- Orbit Project Settings,用于项目配置的其余部分。