如何在Bitbucket Pipeline中用部署变量替换.env文件占位符
完全可以实现,下面给两种适配不同场景的实现方案,都基于Bitbucket Pipelines默认运行环境预装的工具,不需要额外安装依赖:
方案1:使用envsubst(推荐,变量多的时候更简洁)
这个工具是专门用来替换文本中环境变量占位符的工具,使用前需要先调整你的.env模板占位符格式,把原来的<变量名>改成标准的$变量名格式,模板文件(比如命名为.env.template,提交到代码仓库)内容示例:
# 其他固定配置 APP_NAME=我的项目 PORT=$BITBUCKET_VARIABLE_PORT HOST=$BITBUCKET_VARIABLE_HOST # 其他自定义配置项
然后在bitbucket-pipelines.yaml的script段添加替换命令即可:
<...> step: &deploy-to-environment name: Deploy to environment deployment: environment caches: - node script: # 替换模板中的环境变量占位符,生成正式.env文件 - envsubst < .env.template > .env # 可以加一行打印验证替换结果 - cat .env <...>
方案2:使用sed替换,无需修改原有占位符格式
如果你不想调整占位符,还是保留原来的<BITBUCKET_VARIABLE_XXX>格式,可以用sed命令逐个替换占位符:
<...> step: &deploy-to-environment name: Deploy to environment deployment: environment caches: - node script: # 逐个替换占位符,变量多的话新增对应sed行即可 - sed -i "s/<BITBUCKET_VARIABLE_PORT>/$BITBUCKET_VARIABLE_PORT/g" .env - sed -i "s/<BITBUCKET_VARIABLE_HOST>/$BITBUCKET_VARIABLE_HOST/g" .env # 变量很多的话也可以用循环批量处理,不用重复写sed命令: # - | # for var in BITBUCKET_VARIABLE_PORT BITBUCKET_VARIABLE_HOST # do # sed -i "s/<$var>/$(eval echo \$$var)/g" .env # done - cat .env <...>
两种方案都可以正常读取Bitbucket后台配置的部署环境变量,不需要改动你已经配置好的变量设置。
内容的提问来源于stack exchange,提问作者Ihar Dziamidau
相关产品推荐
相关产品推荐

