问题描述
在使用TeamCity自动构建和测试一个Node.js应用程序时遇到了问题。问题是在构建阶段需要设置一些环境变量,而在实际部署(手动步骤)期间需要设置一些秘密变量。这些环境变量应该根据应用程序部署的位置而不同,用户不知道如何在实际构建过程中解决这个问题。用户猜测一种解决方案是为不同的环境(如测试、阶段和生产)设置不同的构建。用户还在考虑使用Vault来存储秘密,例如<PROJECTNAME>/<ENVIRONMENT>/secret
。用户希望得到关于如何解决这个问题的建议。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
一种解决方案是在代码仓库中添加一个配置文件夹,并在其中创建三个文件(staging.yml、preprod.yml和prod.yml)。在每个文件中,您可以编写特定于每个环境的变量,并在流水线中应用它们。对于秘密变量,最好手动处理或使用Vault。
以下是一些操作步骤:
1. 在代码仓库中创建一个名为config
的文件夹。
2. 在config
文件夹中创建三个文件:staging.yml
、preprod.yml
和prod.yml
。
3. 在每个文件中,根据相应环境的要求,设置特定的环境变量。
4. 在流水线中使用这些环境变量。
请注意,为了避免在流水线/容器中出现错误,您可以将秘密变量设置为可选的,这样可以在稍后设置它们。
方案2
如果您使用Kubernetes作为部署环境,您可以使用ConfigMaps来在构建代码时应用它们。
方案3
如果您使用的是其他部署环境,您可以考虑使用类似的配置文件或环境变量的方法来处理不同的凭据。
请注意,这些解决方案可能需要根据您的具体情况进行调整和修改。