在Heroku CI中访问配置变量的问题求助
解决Heroku CI无法读取应用已配置环境变量的问题
问题根源
Heroku CI的测试环境不会自动继承主应用的Config Vars,哪怕你已经在主应用中设置了ENVIRONMENT等变量,测试环境依然无法直接读取到。你之前在app.json顶级添加的env配置块是用于应用初始化阶段(比如通过"Deploy to Heroku"按钮创建应用)的必填变量要求,和CI测试环境无关,这才导致了"Config var is required"的报错。
解决方案
不需要在app.json中写入明文变量值,只需给CI测试环境单独配置对应的Config Vars,同时调整app.json的测试环境配置即可:
1. 移除app.json中的顶级env配置
先把之前添加的这段配置删掉,避免初始化冲突:
"env": { "ENVIRONMENT": { "required": true }, },
2. 给CI测试环境配置Config Vars
有两种方式可以给测试环境添加变量:
- CLI命令方式:
直接通过Heroku CLI给测试环境设置变量(替换your_value为实际值,my-heroku-app-name为你的应用名):heroku config:set ENVIRONMENT=your_value --app my-heroku-app-name --env test - Dashboard方式:
登录Heroku Dashboard,进入你的应用 → 切换到「Tests」标签页 → 找到「Config Vars」区域,点击「Reveal Config Vars」添加所需变量。
3. (可选)在测试环境配置中明确引用变量
修改app.json的environments.test部分,添加env配置块来明确引用测试环境的变量,确保CI能正确读取:
{ "name": "my-heroku-app-name", "repository": "https://github.com/myorg/myrepo", "environments": { "test": { "scripts": { "test-setup": "pip install -r requirements.txt", "test": "pytest tests" }, "env": { "ENVIRONMENT": "${ENVIRONMENT}" } } } }
这里的${ENVIRONMENT}会自动从测试环境的Config Vars中取值,无需明文暴露敏感信息。
完成以上步骤后,重新触发Heroku CI测试,就能正常读取到环境变量,解决断言失败的问题了。
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

