Tom*_*man 84 deployment heroku staging
我希望能够将代码推送到dev.myapp.com测试,然后再www.myapp.com用于生产.Heroku可以实现吗?
Luk*_*yes 142
您与Heroku的接口本质上是一个Git分支.Heroku gem通过他们的API做了一些工作,但是在你的Git存储库中,它只是一个新的远程分支.
heroku create yourapp # production
git br -D heroku # delete the default branch
heroku create staging-yourapp # staging
git br -D heroku # delete the default branch
Run Code Online (Sandbox Code Playgroud)
在Heroku上设置多个应用程序后,您应该能够像这样配置Git存储库:
git remote add staging git@heroku.com:staging-yourapp.git
git push origin staging
git remote add production git@heroku.com:yourapp.git
git push origin production
Run Code Online (Sandbox Code Playgroud)
我通常在一个'工作'分支工作,并使用Github为我的主人.
假设您的情况就是这样,您的部署工作流程可能如下所示:
git co -b working
# do some work
# push to github:
git co master
git merge working
git push
# push to staging:
git co staging
git merge master
git push origin staging
# push to production
git co production
git merge master
git push origin production
Run Code Online (Sandbox Code Playgroud)
Don*_*ham 10
原始问题的一个关键部分是将登台应用程序链接到主应用程序(www.myapp.com)的子域(dev.myapp.com).在任何答案中都没有解决这个问题.
第1步:配置应用程序的生产('myapp')和暂存('staging-myapp')版本,如Luke Bayes的答案所示
第2步:在您的域管理系统(例如GoDaddy)中:
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Run Code Online (Sandbox Code Playgroud)
步骤3:配置Heroku将dev.myapp.com路由到staging-myapp:
heroku domains:add dev.myapp.com --app staging-myapp
Run Code Online (Sandbox Code Playgroud)
在CNAME记录有时间传播之后,您将能够在dev.myapp.com上运行您的暂存应用程序.
事情变得更容易了.这是你如何做到的......
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
Run Code Online (Sandbox Code Playgroud)
这将为每个应用程序创建命名的远程仓库,您可以在其中查看.git/config.
您现在可以使用--app或--remote开关来定位特定应用:
$ heroku info --app myapp-staging
$ heroku info --remote staging
Run Code Online (Sandbox Code Playgroud)
对于Rails应用程序,Heroku 默认使用"生产"环境.如果您希望登台应用程序在临时环境中运行,请在项目中创建环境并在应用程序上设置相应的RAILS_ENV和RAKE_ENV环境变量:
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
Run Code Online (Sandbox Code Playgroud)
如果您有其他配置变量,则还需要为每个环境传递它们.
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
Run Code Online (Sandbox Code Playgroud)
这是一个巨大的痛苦,所以我只是使用我的snappconfig gem并运行
$ rake heroku:config:load[myapp-staging]
Run Code Online (Sandbox Code Playgroud)
将我的项目的YAML配置文件加载到Heroku中.
现在你就像这样推送到Heroku:
$ git push staging master
$ git push production master
Run Code Online (Sandbox Code Playgroud)
并像这样迁移:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
Run Code Online (Sandbox Code Playgroud)
(有关更多信息和快捷方式,请参阅管理应用程序的多个环境| Heroku开发人员中心.)
| 归档时间: |
|
| 查看次数: |
18822 次 |
| 最近记录: |