在Heroku上设置`process.env.commit`
我使用NPM的scripts.postinstall
来build立我们的应用程序使用GulpJS时,我们推到Heroku:
"postinstall": "./node_modules/.bin/gulp build --require coffee-script/register"
我希望能够在这个时候用提交哈希的值来设置一个环境variables。 这将在文件中被引用为caching,例如:
<script type="text/javascript" src="/index.{{ process.env.commit }}.js"></script>
我可以使用git-rev
来轻松地asynchronous获取这个值,但我希望它存储在环境级别上。 我如何设置一个自定义的节点环境variables?
如果我这样做是错误的,有一个更好的解决scheme,请让我知道(我只能find方法来设置NODE_ENV
而不是process.env
对象本身)。
你不能通过postinstall
脚本来做到这一点: heroku
命令在heroku
环境中将不可用。 您可以创build自己的轻量级部署脚本,以便在成功构build时在您的机器上运行该命令:
#!/bin/sh git push heroku master && heroku config:set COMMIT=$(git rev-parse --short HEAD)
注意,我直接从Heroku支持得到了这个确认。 这是他们的回应:
slug编译器上没有安装heroku toolbelt。 如果你需要设置一个环境variables作为推送的一部分,那么你必须在你的机器上而不是Heroku编译器上执行。
我find的解决scheme是使用heroku config
系统来设置自定义的环境variables:
git = require "git-rev" exec = require "exec-sync" gulp.task "commit", -> git.long (hash) -> exec "heroku config:set COMMIT=#{ hash }"
需要进一步testing,但现在它工作(另外,因为命令在服务器上运行,不需要使用heroku config:push
)。
- 如何解决错误“请设置envvariablesCHROME_BIN”运行Angular.js与咕噜声
- 从模板创build多个GitHub私有存储库
- 从GitHub获取npm模块带来“.git”文件夹
- NPM安装:package.json中的Git URL相关性错误
- 将创作的yeoman生成器的更新应用到npm全局安装/更新
- 不能通过节点child_process.spawn调用`git submodule add`
- 不能用Git Bash运行mongo / mongod,但运行在Git CMD(mongo:not found)
- 如何在Bitbucket上的Azure网站上部署一个git标签
- 服务器/客户端的好的Git体系结构?