如何将HEROKU_APP_NAME从Heroku评审应用传递至CI应用
解决Heroku评审应用CI中Newman传递应用URL的问题
核心问题分析
你遇到的问题是Heroku CI环境中HEROKU_APP_NAME变量未被正确传递到测试脚本,或者变量使用方式有误(比如仅传递应用名称而非完整URL)。以下是几种可行的解决方案:
方案1:显式声明环境变量并构造完整URL
修改你的app.json,在test环境中显式声明需要使用的HEROKU_APP_NAME变量,并直接拼接生成完整的应用访问URL:
"environments": { "test": { "env": { "HEROKU_APP_NAME": { "required": true } }, "scripts": { "test-setup": "npm install -g newman", "test": "newman run ./src/test/collection.json -e ./src/test/environment.json --env-var \"baseUrl=https://$HEROKU_APP_NAME.herokuapp.com\"" } } }
- 新增
env字段声明HEROKU_APP_NAME为必填变量,确保Heroku CI将其注入测试环境 - 直接拼接
https://和.herokuapp.com后缀,生成符合要求的完整应用URL
方案2:先验证变量可用性再执行测试
如果不确定变量是否正常注入,可以在测试脚本中先打印变量值,方便排查问题:
"test": "echo \"当前评审应用名称:$HEROKU_APP_NAME\" && newman run ./src/test/collection.json -e ./src/test/environment.json --env-var \"baseUrl=https://$HEROKU_APP_NAME.herokuapp.com\""
查看CI运行日志,若HEROKU_APP_NAME为空,需检查:
- 评审应用是否已启用CI功能
- Heroku账户是否具备传递环境变量的权限
方案3:通过Heroku CLI获取官方应用URL(备选)
如果构造URL的方式不生效,可以借助Heroku CLI获取官方返回的应用URL:
"scripts": { "test-setup": "npm install -g newman && npm install -g heroku", "test": "APP_URL=$(heroku apps:info -s -a $HEROKU_APP_NAME | grep web_url | cut -d'=' -f2) && newman run ./src/test/collection.json -e ./src/test/environment.json --env-var \"baseUrl=$APP_URL\"" }
- 在
test-setup中额外安装Heroku CLI - 通过
heroku apps:info命令获取应用的官方URL,再传递给Newman
内容的提问来源于stack exchange,提问作者Arteliar MG
相关产品推荐
相关产品推荐

