Bitbucket部署Salesforce CI/CD时ENVIRONMENT变量为空问题求助
以下是针对性的排查和解决步骤:
核对部署环境名称匹配度
Bitbucket的部署环境名称是大小写敏感的,确保bitbucket-pipelines.yml里的deployment: production和你在Bitbucket后台创建的部署环境名称完全一致(比如后台是Production,yml里写production就会匹配失败)。验证部署环境变量的配置位置
确认ENVIRONMENT变量是配置在部署环境(仓库设置→部署→对应环境的变量)里,而不是仓库的全局变量。全局变量不会自动关联到部署环境,只有部署环境下的变量才会在指定deployment的步骤中生效。检查分支保护与变量可见性
如果部署环境的变量设置了「仅对受保护分支可见」,需要确保master/release分支已被标记为受保护分支(仓库设置→分支规则)。否则变量不会被注入到非受保护分支的pipeline中。排查pipeline配置的优先级问题
检查bitbucket-pipelines.yml中是否存在优先级更高的分支规则(比如**匹配所有分支),覆盖了master/release分支的配置。确保目标分支的配置是独立且优先级更高的(分支规则的优先级是精确匹配高于模糊匹配)。用最小示例测试变量读取
暂时替换部署脚本为简单的变量输出,验证变量是否能被正常读取:pipelines: branches: master: - step: deployment: production script: - echo "ENVIRONMENT: $ENVIRONMENT" - echo "CONSUMER_KEY: $CONSUMER_KEY"如果运行后能输出ENVIRONMENT的值,说明问题出在你的Salesforce部署脚本中(比如脚本重置了变量、读取方式错误);如果仍然为空,回到前几步重新核对环境配置。
确认脚本读取变量的方式
确保部署脚本中是直接通过$ENVIRONMENT读取变量,不要尝试重新定义或覆盖该变量。如果使用的是PowerShell脚本,对应语法是$env:ENVIRONMENT,避免语法错误导致读取失败。
内容的提问来源于stack exchange,提问作者Hermann Ouré

