我们目前正在使用CI进行一些小型项目,然后我们才开始使用更大的项目。
我们面临的问题是,持续部署更新会导致我们的环境变脏。脏的意思是旧文件没有删除。过了一会儿,我们注意到不再使用了几十个文件并不罕见。例如,对于我们的Python项目,我们注意到位于pip
中的许多virtualenv
包已经过时,因为我们已停止使用它。
我们当前的方法是通过查找应用程序驻留在服务器上的文件夹并上传由构建服务器创建的新工件来解决此问题。
还有另一种方法吗?我问,因为很明显,每次推送都会创建一个全新的环境,这为我们的部署增加了大量的时间。我认为这是一个非常普遍的问题,这就是为什么我有点惊讶我可以找到任何关于此的文献。
答案 0 :(得分:2)
您可以使用滚动符号链接而不是nuking文件夹。这种方式的工作方式是为您运行CI的每个功能创建一个目录。例如,您可以说有2个文件夹F1和F2对应于您的功能。
如果要在F1上运行CI,您将创建一个切换到F1的符号链接。如果要测试F2,则需要将符号链接切换为F2,依此类推。这样您就不必重新部署每一段代码。大多数现代工具(java编译器,复制命令)已经有一种机制,如果它们是相同的,就不会覆盖伪像。
要改善CI环境,您可以在临时文件夹中创建所有临时文物,并在完成CI后清理它们