2017-04-21 46 views
2

我目前正在为使用结构的django应用程序编写部署脚本。对于我来说,有必要/有用的是有一个用于版本控制应用程序使用的virtualenv的系统,以防需要回滚。为django部署版本化virtualenv - 要求的点输出

我认为可以这样做的最健壮的方式是创建名称与需求文件内容的md5哈希值相同的virtualenvs。这意味着当需求发生变化时,校验和会发生变化,我可以使用新的散列值复制/更新virtualenv,并在需要回滚的情况下保留旧的散列virtualenv(然后只需切换“当前”符号链接) 。

麻烦的是我在例如使用嵌套的需求文件语法。我的production.txt需求文件(-r base.text),所以md5散列不会考虑基本要求的变化等。

有没有输出pip可以提供解析这些文件,然后再安装它们?我不想安装它们,然后点击冻结只是为了弄清楚是否有什么改变。

+1

不知道我明白了。如果您使用需求文件,并且拥有像git这样的代码版本,那么回滚也不会回滚需求文件? – Daniel

回答

1

为什么不使用简单的unix工具(如cat)来计算md5,而不是使用嵌套的需求。只需使用多个需求文件。

或者,如果你真的想要我们嵌套的需求,你需要编写一个小的shell脚本,为grep-r file.txt并将其添加到你的md5计算中。

虽然这是一个很好的主意。散列requirements.txt文件并使用该名称保存env。在分布式构建系统中也可以轻松快速地缓存它。