我想到了两个工具,它们都是通用的 python 工具——它们不需要专门与 Django 一起使用:
- 面料。我们用这个;它允许我们像 SSH 一样编写远程命令,上传代码等。这些不是你不能做的,因为它本质上是一个用 python 编写的 bash 脚本,所以很容易上手。但它也是一个用 python 编写的 bash 脚本,这意味着您可以导入 django 应用程序的部分内容,运行测试或在运行部署过程中执行 python 可以做的任何事情。
- 扩建。我没有使用过这个,但是我们的 django 前端开发人员告诉我这绝对是可以使用的工具。猜测一下,它要么是相同的想法,要么是更抽象、更面向 python 的等价物。
我确信还有其他可用的软件包。我能给你的最好建议是简要评估它们,然后选择最适合你的场景/团队工作方式的。请注意,这些主要是部署工具 - 在 python 中构建并没有真正意义,因为您不编译 python 代码。
就 CI 相关的东西而言,您需要了解来自 django 的三个命令:
./manage.py test
从所有tests.py
文件运行您的测试。这些基本上是 django 特定的增强unittest
,一个 python 包。
./manage.py collectstatic
将静态文件收集到您选择的目录中;对于将所有位放在一起以存在于静态媒体服务器上非常有用。查看静态文件 howto以了解其工作原理。
- 你需要South来做这个,
./manage.py schemamigration app --auto && ./manage.py migrate app
- 这会将模型更改应用于底层 sql 模式。基本上,如果你只是改变一个模型而不使用 south,Django 会非常沮丧,因为新字段不会映射到旧的 sql 模式,它也无法持久化你的模型。south 支持的模式迁移使您能够升级现有的填充数据库。在自动化之前值得手工操作。
- 我还应该指出,您可以编写自定义管理命令来执行
./manage.py whatever you like
。这具有相当大的潜力——例如,我使用管理命令作为在 cron 作业中执行的命令。您还可以为应用程序的管理员构建交互式命令,当然还有部署和测试。
如何处理这些实际上取决于您可用的设置以及您选择的工具。
编译时:最接近使用 python 构建的是 freeze,也就是 py2exe 或 cxfreeze,它们会生成二进制文件。请注意,尽管所有这些都是将 python 字节码存储在一个 exe 中并通过解释器传递它,但无论如何它都是一个共享对象。此外,您不能 cxfreeze django 应用程序,因为 django 本身使用在运行时发生的动态导入,因此不能由 cxfreeze 评估,这本质上是一个编译时工具。因此,将建筑视为一项需要完成的任务。您可能会看到.pyc
文件出现在您的目录中 - 如果自上次 pyc 以来对其进行了更改,python 会将您的 python 脚本转换为 python 字节码。如果未进行任何更改,则加载pyc
上次的文件。Python 字节码是被执行的,所以这并不是真正的性能加速,只是加载时间。