在自定义的Heroku Python buildpack中,如何设置配置var?
我想为我的Python应用程序设置一个自定义的配置变量来使用。具体而言,将当前的SHA用作静态文件中的URL参数,以强制CDN在每次部署时重新启动。我试图用一个自定义的buildpack来完成,基于普通的Heroku Python(https://github.com/heroku/heroku-buildpack-python)。在自定义的Heroku Python buildpack中,如何设置配置var?
我现在在哪里,我已经开始修改compile
脚本。到目前为止,我已经能够得到我所需要的价值,但在顶部附近跑起来,围绕30日线之前GIT_DIR未设置
export GIT_SHA=$(git log -1 --format="%h")
再后来,周围线175,我认为是它设置应用程序的配置变量。我尝试添加我自己:
set-env GIT_SHA '$GIT_SHA'
无济于事
我已经运行heroku labs:enable user-env-compile
我认为这是一个必要的步骤,但我不能为我的生活弄清楚如何获得该buildpack实际上为我的应用程序使用配置var。
编辑 能够解决这个与安德鲁的建议。我创建了一个自定义buildpack,它调用一个使用Heroku python绑定来设置var的Python脚本,并从构建包中设置的环境变量中读取它。
如果我对你的问题的理解是正确的,你希望在编译时设置一个env变量,但是在执行期间读取它(每当你的应用程序访问一个静态文件的URL时)。这是否准确?
编译是在完全不同的dyno上完成的,因此在编译期间执行set-env可能会改变编译dyno的环境,但不会影响生产dynos的环境稍后再来。
我不认为heroku labs:enable user-env-compile
在这里是相关的,因为它允许您在编译期间从配置读取,但它不允许您写入它。
如果您确实想要使用env变量,则可以使用Heroku API's python bindings来动态修改您的应用程序的配置。你也可以尝试在编译输出的某个地方保存一个临时文件,然后从buildpack中启动你的dyno的部分读取该文件。或者可能在开机时直接从生产测试仪中获取SHA,而不涉及编译测试仪。
但是,所有这些都是相当不规则的,并且可能有一个更简洁的方法来实现您在CDN上对静态文件进行版本控制的目标。
本质上,我想最终获得与在命令行上运行'heroku config:set'相同的结果。 – 2013-02-28 02:40:30
然后,您需要使用上面的答案中链接的Heroku API python绑定。就我所知,这是从应用程序内部影响配置的唯一方法。您可以事先使用'heroku config:set'来告诉您的应用程序自己的名称和您自己的API密钥,然后动态访问该信息并使用它来添加额外的配置变量。 – 2013-02-28 02:45:44