【问题标题】:Rebuilding a Django site every night每晚重建一个 Django 站点
【发布时间】:2011-07-26 17:27:27
【问题描述】:

我有一个 django 网站,每天晚上都需要重建。我想从 Git repo 中查看代码,然后开始做一些事情,比如设置虚拟环境、下载包等。这不需要人工干预,因为这将是从 cron 运行的

我真的很困惑该用什么。我应该编写 Python 脚本还是 Shell 脚本?是否有任何工具可以帮助实现这一点?

谢谢。


所以我正在寻找的是 CI,从我所看到的情况来看,我最终可能会使用 Jenkins 或 Buildbot 来实现它。对于以前从未尝试过这样的事情的人来说,我发现这些文档相当神秘。

像 Buildbot/Jenkins 这样的所有 CI 是否只是简单地运行测试和更多测试并向您发送报告,还是他们实际上设置了一个您可以通过浏览器访问的工作 Django 环境?

【问题讨论】:

  • 您在寻找持续集成系统吗? Buildbot 就是这样一种用 Python 编写的东西。
  • 您是在谈论实际将每晚更改部署到生产环境吗?我完全支持一键式部署,但我不确定我是否希望 HEAD 在没有真正了解回归测试结果或类似“拉动触发器”的人的情况下投入生产" 在特定版本上。
  • 不,它不适用于生产环境。这是我们希望每晚重建的 TEST 和 UAT 环境。
  • 您的编辑是一个单独的问题,应该有自己的主题。请为此打开另一个问题,并且不要进一步扩大您的问题,因为我们已经回答了您的第一个问题。

标签: python django deployment web-deployment


【解决方案1】:

您需要创建某种构建脚本来完成除 GIT 检出之外的所有操作。我从未使用过任何 Python 构建工具,但可能类似于:http://www.scons.org/

创建脚本后,您可以使用 Jenkins 安排每晚构建并报告成功/失败:http://jenkins-ci.org/。 Jenkins 将知道如何检查您的代码,然后您就可以让它运行您的脚本。

【讨论】:

  • 詹金斯到底是做什么的?我以前听过这个词一百万次,但我无法理解它。谢谢。
  • Jenkins 持续构建软件项目并监控远程作业的执行。
【解决方案2】:

几乎有 100 种不同的工具可以做到这一点。你可以编写从 cron 运行的 python 脚本,你可以编写 shell 脚本,你可以使用 100 种不同的构建工具中的一种。

大多数 python/django 商店可能会推荐Fabric。这实际上是您运行并确保您了解需要完成的所有内容以及如何编写脚本的问题。您是否需要在部署之前运行测试套件以确保它不会真正破坏一切?您需要运行 South 数据库迁移吗?您确实需要考虑需要做什么,然后编写一个结构脚本来完成这些事情。

这些甚至都没有触及这样一个事实,即总体而言,您所要求的是持续集成,它本身具有一整套工具来帮助管理它。

【讨论】:

    【解决方案3】:

    你要的是Continuous Integration

    市面上有许多 CI 工具,但最终归结为您的个人偏好(希望如此)以及哪一种最适合您。

    Django 项目本身uses buildbot

    如果您要问我,那么我会推荐您continuous.io,它适用于 Django 应用程序。 您可以手动设置要构建 Django 项目的次数,这很棒。

    当然,你可以编写一个 shell 脚本,通过 cron 重建你的 Django 项目,但你应该得到更好的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2012-09-03
      • 2011-03-07
      • 2023-03-20
      • 1970-01-01
      • 2016-10-01
      • 2016-10-12
      相关资源
      最近更新 更多