使用heroku,flask和yeoman的应用程序结构和工作流程

时间:2013-12-02 14:50:01

标签: git heroku flask gruntjs yeoman

我构建一个简单的Web应用程序AngularJS和Flask(REST arch。)我正在使用yeoman生成所有样板文件。问题在于heroku托管需要通过git进行部署。项目结构:

client <- content generated by yeoman
server
|-- static
|-- venv
server.py <- flask
Procfile
.gitifnore
...

我修改了grunt脚本,所以最后dist文件夹被复制到静态。目前dist位于.gitignore,但我正在考虑一些可能的解决方案

  1. Sepreate repo for deployment
  2. 致力于每一次构建
  3. 以Heroku为基础构建
  4. 每个人都有利有弊(不知道是否有可能)。还有更好的方法吗?

    编辑:

    这是当前的事件状态。 grunt复制dist客户端到heroku\static,现在我手动复制服务器。但我不知道如何将它推向heroku。 git subtree push --prefix heroku heroku master给了我拒绝的消息。我设置遥控器并尝试所有组合,但到目前为止没有成功。

    .git 
    .gitignore
    README.md
    client
    heroku
       .git
       static
       Procfile
       requriements.txt 
    server
    

2 个答案:

答案 0 :(得分:1)

关于第一个选项:查看this SO线程 - 基本上使用git-subtree,您可以为构建创建单独的repo,并避免使用生产提交污染dev repo。
因为第二种选择毫无意义。

答案 1 :(得分:0)

我最终拥有单独的repo并使用invoke进行管理。这是构建脚本。

from invoke import run, task

@task
def clean():
  run("rm -rf heroku/*")
  run("cd client && grunt clean")

@task
def build():
  run("cd client && grunt")

@task
def deploy():
  run("mkdir heroku/static && cp -r client/dist/* heroku/static/")
  run("rsync -av --exclude='venv' --exclude='local_server.py' server/ heroku")
  msg = run("git log -1 --pretty=%B").stdout
  run("cd heroku && git add --all && git commit -m '%s' && git push heroku master" % (msg,))

@task("clean", "build", "deploy")
def all():
  pass