本文档涵盖了 Gumroad 平台使用的配置管理系统,包括环境变量、秘密处理和多环境配置策略。该系统支持开发、测试和生产环境,并具备安全的凭证管理和自动化部署流程。
有关特定环境变量配置的详细信息,请参阅环境变量。有关安全凭证处理和部署流程,请参阅秘密管理。
Gumroad 平台采用多层配置管理方法,将公共配置模板与敏感凭证分离,支持多个部署环境,并与 CI/CD 管道集成以实现自动化秘密供应。
配置系统采用基于模板的方法,其中.env.example1-237将所有必需的环境变量定义为文档,而实际值则存储在一个单独的私有仓库中,通过copy_secrets.sh脚本进行访问。
来源: .env.example, .buildkite/scripts/copy_secrets.sh
系统将配置组织成逻辑服务类别
| 类别 | 目的 | 关键变量 |
|---|---|---|
| AWS/S3 | 云存储和 CDN | AWS_ACCESS_KEY_ID, S3_BASE_URL_TEMPLATE |
| 支付处理 | Stripe 和 PayPal 集成 | STRIPE_API_KEY, PAYPAL_CLIENT_ID |
| 邮件服务 | SendGrid 和 Resend API | SENDGRID_GR_CREATORS_API_KEY, RESEND_CREATORS_API_KEY |
| 社交认证 | OAuth 提供商 | GOOGLE_CLIENT_ID, FACEBOOK_APP_ID |
| 安全 | 加密和 HMAC 密钥 | MAILER_HEADERS_ENCRYPTION_KEY_V1, CLOUDFLARE_HMAC_KEY |
| 外部服务 | 第三方集成 | ZOOM_CLIENT_ID, BUGSNAG_API_KEY |
来源: .env.example
秘密管理系统使用专用脚本,与 CI/CD 管道集成,以安全地在不同环境中提供凭证。
该脚本执行以下几个关键操作
git clone --depth 1仅获取最新凭证.buildkite/scripts/copy_secrets.sh19.git、.gitignore和文档.buildkite/scripts/copy_secrets.sh25-28buildkite-agent用户使用sudo操作并设置适当的所有权.buildkite/scripts/copy_secrets.sh39-40来源: .buildkite/scripts/copy_secrets.sh
该平台支持多个部署环境,并具有环境特定的配置值,特别是针对 URL、API 端点和服务标识符。
常见的环境特定模式包括
CLOUDFRONT_DOWNLOAD_DISTRIBUTION_URL_DEV与CLOUDFRONT_DOWNLOAD_DISTRIBUTION_URL_PROD等变量.env.example16-17HLS_PIPELINE_ID_DEV与HLS_PIPELINE_ID_PROD.env.example31-32ENV_IDENTIFIER_DEV和ENV_IDENTIFIER_PROD用于运行时环境检测.env.example173-174来源: .env.example
配置管理系统与 Buildkite CI/CD 管道紧密集成,在部署过程中提供自动化的秘密供应。
| 管道阶段 | 配置操作 | 脚本/流程 |
|---|---|---|
| 预命令钩子 | 秘密供应 | copy_secrets.sh执行 |
| 构建流程 | 环境变量注入 | Docker 构建上下文 |
| 部署 | 环境特定配置选择 | Nomad 作业模板 |
| 运行时 | 配置验证 | 应用程序启动 |
copy_secrets函数包含全面的错误处理和日志记录,使用彩色输出以提高构建可见性.buildkite/scripts/copy_secrets.sh4-8,以及环境变量验证.buildkite/scripts/copy_secrets.sh11-14
来源: .buildkite/scripts/copy_secrets.sh
配置管理系统实施了多项安全实践
来源: .buildkite/scripts/copy_secrets.sh