文档

私密配置项

更新时间:
一键部署

在应用构建中,通常会需要一些配置项,如:

  1. 功能开关

  2. 依赖系统的URL

  3. 数据库链接用户名密码

对于前两项,云效没有提供额外的支持,推荐您直接在代码中保存不同的配置文件,然后在构建时根据PACKAGE_LABEL的环境变量,选取正确的配置文件。请阅读使用传入参数改变构建行为,了解更多关于PACKAGE_LABEL的用法。

第三项中的配置项会涉及一些私密信息,不适合放在代码库中。云效提供了私密配置项的保存功能。您可以在应用的私密配置项页面(https://rdc.aliyun.com/ec/app/xxx/securityConfig)添加和配置应用级别的私密配置项。比如:

normal

如果您需要在多个环境都使用私密配置项,则可以使用如下的方式:

multi-env

配置好这些私密配置项之后,在进行构建时,云效会把这些配置项转换成为一个明文的文件,并将其放置在根目录下的rdc_security_config.properties中,比如:

rdc_security_config.properties:

db_password=somepasswd

您可以在自己的构建脚本中读取该文件,并按照您自己的方式进行使用。

实例

接下来给出一个实际使用的例子:

代码库结构:

├── README.md
├── build.sh
├── config
│   ├── application.prepub.properties
│   └── application.production.properties
├── app.release
├── pom.xml
├── src

application.prepub.properties的内容:

key1=somevalue
key2=somevalue
key3=somevalue
db.password=${db_password}

私密配置项内容:private_config

构建配置(这里给出两个包标签,在构建时会打出两个包):buildconfig

build.sh内容:

// 将rdc_security_config.properties中与当前PACKAGE_LABEL有关的配置提取出来,去除PACKAGE_LABEL前缀,并转化成为可以source的格式。在这个例子中也就是:export db_password=xxxxxx,最后存入临时文件
cat rdc_security_config.properties | grep ${PACKAGE_LABEL} | sed s/^${PACKAGE_LABEL}./export\ /g > tmpconfig
cat tmpconfig
// source临时文件,将配置导入到环境变量中
source tmpconfig
// 对指定配置文件(config/application.${PACKAGE_LABEL}.properties)中的环境变量占位符使用环境变量中的值替换,从而变成私密配置项中配置的值
perl -pe 's/\$\{(.*)}/ $ENV{$1} /e'  < config/application.${PACKAGE_LABEL}.properties  > config/application.properties
// 打印出生成的配置文件的内容,用于调试。实际使用过程中去除该行:
cat config/application.properties
// 删除临时文件及其它环境的配置项,因为产物包不需要这些
rm -rf config/application.*.properties tmpconfig
// 做其它的打包工作,比如mvn package等

根据构建配置,云效会打出两个包,下面是prepub这个包的构建日志:output

对照上面的build.sh,可以看到config/application.properties的值已经变成了预期的内容。

  • 本页导读 (0)