环境变量在CI/CD中驱动模板填充生成配置文件,通过安全模板、加密变量注入、脚本替换(sed/PHP/dotenv)动态生成,配合验证与清理确保一致性,实现“一次定义、多环境生效”。

环境变量在 CI/CD 流水线中生成配置文件,核心是“用变量驱动模板填充”,而不是把配置硬写进代码库。整个过程不依赖人工修改,所有敏感值和环境差异都由流水线运行时注入。
准备安全的配置模板
项目根目录下保留一个非敏感的模板文件,比如 .env.example 或 config.dist.php。它只含占位符,例如:
DATABASE_URL=DATABASE_URL_PLACEHOLDERAPP_DEBUG=APP_DEBUG_PLACEHOLDERAPI_KEY=API_KEY_PLACEHOLDER
这个文件可提交到 Git,但真实配置文件(如 .env)必须加入 .gitignore,禁止入库。
在流水线中注入环境变量
CI 平台(GitHub Actions、GitLab CI、Jenkins 等)提供加密的环境变量管理界面。你只需在后台配置:
-
生产环境变量:如
PROD_DATABASE_URL、PROD_API_KEY -
测试环境变量:如
TEST_DATABASE_URL、TEST_API_KEY -
通用开关变量:如
NODE_ENV=production、APP_DEBUG=false
这些变量不会出现在日志或构建产物中,仅在流水线执行阶段可用。
用脚本动态生成最终配置
在流水线的 deploy 或 build 阶段添加一行命令,把模板中的占位符替换成对应变量值。常用方式有:
-
sed 替换(适合简单场景):
sed -e "s/DATABASE_URL_PLACEHOLDER/$PROD_DATABASE_URL/g" -e "s/API_KEY_PLACEHOLDER/$PROD_API_KEY/g" .env.example > .env -
PHP 脚本(更健壮、支持逻辑判断):写一个
generate-config.php,读取$_ENV或getenv(),拼接数组后写入config.php -
dotenv 工具(Laravel/ Symfony 项目推荐):用
vlucas/phpdotenv的命令行工具或自定义逻辑加载环境变量并导出
生成后的配置文件会随应用一起部署,且每次构建都是全新生成,避免残留旧配置。
验证与清理保障一致性
生成完成后建议加两步检查:
- 用
grep -q "PLACEHOLDER" .env && exit 1 || echo "✅ 配置已替换"确保没漏替换 - 部署后执行
php artisan config:clear(Laravel)或opcache_reset()(自建 PHP 应用),防止缓存旧配置
本地开发仍用复制模板 + 手动填值的方式,而所有生产级配置完全由 CI 控制,实现真正的“一次定义,多环境生效”。


















