从未签入源代码管理的文件中加载 CodeBuild 环境变量
Load in CodeBuild environment variables from a file that's not checked into source control
我有一个在本地使用的环境文件,但我没有签入源代码管理。它看起来类似于:
env.ts
const config = {
prod: {
serviceA: {
varA: 'xyz',
varB: 'xyz',
varC: 'xyz',
varD: 'xyz',
},
serviceB: {
varA: 'xyz',
varB: 'xyz',
varC: 'xyz',
varD: 'xyz',
},
},
test: {
serviceA: {
varA: 'xyz',
varB: 'xyz',
varC: 'xyz',
varD: 'xyz',
},
serviceB: {
varA: 'xyz',
varB: 'xyz',
varC: 'xyz',
varD: 'xyz',
},
},
};
export default config;
使用 Webpack,我可以在本地构建时为特定服务加载适当的环境变量。模块可以像这样访问这些环境变量:
import config from '@env';
const {
varA,
varB,
varC,
varD,
} = config[process.env.NODE_ENV].serviceA;
我用 AWS CodePipeline 和 CodeBuild 设置了这个项目,我意识到测试和构建将无法进行,因为我的 env.ts 文件没有被检查进入源代码管理,因为它包含敏感凭据。
我可以在 CodePipeline / CodeBuild 控制台中添加环境变量,但我认为这行不通,因为代码引用了一个名为 env.ts 的文件,该文件未签入源代码管理。
是否可以将此 env.ts 保存在 S3 之类的东西中,然后将其拉入管道以在构建期间在云中使用?也许我可以在构建规范中以某种方式加载这个文件?这是我当前的构建规范以供参考:
version: 0.2
phases:
install:
commands:
- echo installing packages...
- npm install --global yarn
- yarn install
# <-- load in env.ts file here somehow?
build:
commands:
- echo running tests...
- yarn jest
- echo building...
- yarn build
artifacts:
files:
- $CODEBUILD_SRC_DIR/dist/prod/*
代码构建已经为此提供了环境变量设置。
或者您可以使用 S3 私有存储桶来存储配置文件并在运行时使用 AWS S3 cli 命令提取文件。只需确保 codebuild 已获得必要的权限,以便在构建期间从 s3 中提取配置文件。
如果您正在使用代码构建环境变量,您可以使用参数存储来存储您的敏感信息,并通过在您添加到代码构建的环境变量前面添加“$”来访问 buildspecyml
我有一个在本地使用的环境文件,但我没有签入源代码管理。它看起来类似于:
env.ts
const config = {
prod: {
serviceA: {
varA: 'xyz',
varB: 'xyz',
varC: 'xyz',
varD: 'xyz',
},
serviceB: {
varA: 'xyz',
varB: 'xyz',
varC: 'xyz',
varD: 'xyz',
},
},
test: {
serviceA: {
varA: 'xyz',
varB: 'xyz',
varC: 'xyz',
varD: 'xyz',
},
serviceB: {
varA: 'xyz',
varB: 'xyz',
varC: 'xyz',
varD: 'xyz',
},
},
};
export default config;
使用 Webpack,我可以在本地构建时为特定服务加载适当的环境变量。模块可以像这样访问这些环境变量:
import config from '@env';
const {
varA,
varB,
varC,
varD,
} = config[process.env.NODE_ENV].serviceA;
我用 AWS CodePipeline 和 CodeBuild 设置了这个项目,我意识到测试和构建将无法进行,因为我的 env.ts 文件没有被检查进入源代码管理,因为它包含敏感凭据。
我可以在 CodePipeline / CodeBuild 控制台中添加环境变量,但我认为这行不通,因为代码引用了一个名为 env.ts 的文件,该文件未签入源代码管理。
是否可以将此 env.ts 保存在 S3 之类的东西中,然后将其拉入管道以在构建期间在云中使用?也许我可以在构建规范中以某种方式加载这个文件?这是我当前的构建规范以供参考:
version: 0.2
phases:
install:
commands:
- echo installing packages...
- npm install --global yarn
- yarn install
# <-- load in env.ts file here somehow?
build:
commands:
- echo running tests...
- yarn jest
- echo building...
- yarn build
artifacts:
files:
- $CODEBUILD_SRC_DIR/dist/prod/*
代码构建已经为此提供了环境变量设置。 或者您可以使用 S3 私有存储桶来存储配置文件并在运行时使用 AWS S3 cli 命令提取文件。只需确保 codebuild 已获得必要的权限,以便在构建期间从 s3 中提取配置文件。 如果您正在使用代码构建环境变量,您可以使用参数存储来存储您的敏感信息,并通过在您添加到代码构建的环境变量前面添加“$”来访问 buildspecyml