我想在预览应用上将HOST
env var设置为$HEROKU_APP_NAME.herokuapps.com
。在app.json
中看起来我不能这样做,因为这是一个计算值。
我希望在像这样的“postdeploy”脚本中执行此操作
heroku config:set HOST="`heroku config:get HEROKU_APP_NAME -a neon-dev-pr-520`.herokuapps.com"
但它想要以Heroku用户身份验证我。唉,这也不起作用:
export HOST=$HEROKU_APP_NAME.herokuapps.com
有什么建议吗?
答案 0 :(得分:2)
我发现this post表示您可以使用Heroku PlatformAPI。
在这种情况下,作为Rails Rake任务运行作为postdeploy:
desc 'Bootstrap review app'
task bootstrap: ['db:schema:load', 'db:seed'] do
heroku = PlatformAPI.connect_oauth(ENV['HEROKU_API_TOKEN'])
heroku.config_var.update(ENV['HEROKU_APP_NAME'], 'WWW_HOSTNAME' => "#{ENV['HEROKU_APP_NAME']}.herokuapp.com")
end
答案 1 :(得分:0)
只要您在HEROKU_APP_NAME
文件中声明HEROKU_PARENT_APP_NAME
或app.json
为必需或可选,就可以在postdeploy脚本中使用它们,这样您就可以:
HOST="$HEROKU_APP_NAME.herokuapp.com"
答案 2 :(得分:0)
几年前在Heroku出色的支持团队的协助下进行了锻炼。我们需要为中间件(解析服务器)设置一个自反环境变量,以了解要连接的内容。它是在我们的登台和生产应用程序上手动设置的,但要在我们的评论应用程序上进行设置,就可以:
我的app.json包括:
"scripts": {
"postdeploy": "bin/bootstrap"
},
...
"env": {
"HEROKU_APP_NAME": {
"required": true
},
"HEROKU_PARENT_APP_NAME": {
"required": true
},
...
bin / bootstrap是:
#!/usr/bin/env bash
echo $HEROKU_APP_NAME
export SERVER_URL=https://$HEROKU_APP_NAME.herokuapp.com/parse
SERVER_URL
在我的评论应用中可用(并且正确)。自从我们实施以来就没问题。
答案 3 :(得分:0)
在部署后脚本中使用python请求:
import requests
result = requests.patch(f"https://api.heroku.com/apps/{os.environ.get('HEROKU_APP_NAME')}/config-vars",
data=json.dumps({"YOUR_KEY": "SOME_VALUE"}),
headers={"Content-Type": "application/json",
"Accept": "application/vnd.heroku+json; version=3",
“授权”:f“承载者{os.environ.get(” HEROKU_API_KEY“)}”} )
或在登录时使用curl:
curl -n -X PATCH https://api.heroku.com/apps/$HEROKU_APP_NAME/config-vars \
-d '{
"FOO": "bar",
"BAZ": "qux"
}' \
-H "Content-Type: application/json" \
-H "Accept: application/vnd.heroku+json; version=3"
并且在未登录时添加标头,其中已生成应用程序令牌:
-H "Authorization: Bearer $HEROKU_API_KEY"