【问题标题】:Deploying database into different environments with application-specific data使用特定于应用程序的数据将数据库部署到不同的环境中
【发布时间】:2025-12-19 00:45:02
【问题描述】:

我确实有一个要求,我需要将我的数据库部署到不同的环境中,并在目标环境中使用特定于应用程序的数据。 例如,我们正在与第三方服务集成,它们确实具有不同的凭据和特定于目标环境的其他参数。例如用于测试和生产环境的凭据和端点以及其他参数。

目前,我们正在使用针对这些环境的部署后数据库脚本并将它们存储在我们的 git 存储库中。 我阅读并听说我们不应该在存储库中提交此类敏感信息,因为存在黑客攻击和窃取的风险。

有人可以建议在您的 CI/CD 管道中处理此要求的更好方法(最佳实践)吗?

我们在 CI/CD 流程中使用 TeamCityOctopus 工具。

感谢您在这方面的宝贵建议和反馈。 还可以随时分享最佳 CI/CD 实践,以在您的开发过程中克服此类问题。

谢谢, 无国界医生

【问题讨论】:

  • 不假装“最佳实践”...根据您所拥有的最简单的方法:使用仅允许管理员访问的单独 git 存储库,或 teamcity 项目参数。
  • 可能将 usr/psw 等数据保留为每个环境的 sensitive variables
  • 嗨@AlexM,感谢您的反馈。您如何读取 *.sql 脚本文件中的 Octopus 变量?感谢您的建议。
  • 您可以使用 sqlpackage.exe passing variables in (/v: variable1 = value1) 部署您的 dacpac。
  • 谢谢@AlexM,我会试一试的。

标签: continuous-integration teamcity continuous-deployment octopus-deploy


【解决方案1】:

我会通过在Octopus 中将 usr/psw 之类的数据保存为每个环境的sensitive variables 来接近它。

要部署,我会使用 sqlpackage.exe passing in the dacpac and the variables (/v: variable1=value1)。

【讨论】: