You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:36:02