Python 如何在多台服务器上实现web应用程序的自动更新功能?

Python 如何在多台服务器上实现web应用程序的自动更新功能?,python,django,auto-update,Python,Django,Auto Update,我需要一个如何实现以下内容的想法 1.希望构建python应用程序,该应用程序将在新补丁可用时自动更新 2.它将运行单元测试以检查修补程序是否成功部署 3.如果在安装过程中出现任何故障,它将自动回滚 我不知道的事 A.不确定如何从源代码构建修补程序 B.检查新更新的算法/标准流程可用 C.自动部署/回滚过程 有什么建议/链接吗?我实现了一个服务器,可以识别更改的源代码并提取新代码。它位于,代码处于打开状态。这个答案基于我在实现更新功能时的经验 当您与您一起对代码进行版本设置时,通常 有一个有效

我需要一个如何实现以下内容的想法
1.希望构建python应用程序,该应用程序将在新补丁可用时自动更新
2.它将运行单元测试以检查修补程序是否成功部署
3.如果在安装过程中出现任何故障,它将自动回滚

我不知道的事
A.不确定如何从源代码构建修补程序
B.检查新更新的算法/标准流程可用
C.自动部署/回滚过程


有什么建议/链接吗?

我实现了一个服务器,可以识别更改的源代码并提取新代码。它位于,代码处于打开状态。这个答案基于我在实现更新功能时的经验

当您与您一起对代码进行版本设置时,通常

  • 有一个有效的主分支或部署分支
  • 拥有一个开发分支,当所有测试运行完毕时,该分支合并到主-->部署分支中
这样,您只需要知道部署分支何时更改,就可以确定何时重新启动。测试应在之前运行,以避免停机。如果在部署系统上运行测试,可能会花费太多时间,或者无效代码会破坏系统。 因此部署分支可以工作,因为它以前已经过测试

对于自动化测试,您可以使用这样的持续集成服务器下载代码并进行测试。可以询问特定提交的测试运行是否正确

当您在github上托管代码时,可以指定推送http地址。每当存储库发生更改时,我都会使用github通知您的服务器

然后,您可以通过从git中提取源代码来更新源代码,如果部署分支确实发生了更改,则可以重新启动应用程序。我不能在服务器上这样做,但也许你可以

场景:

  • 我将代码推送到github
  • github向
    http://server/update
  • 请查看以下两个文件:

    • 对于git命令
    • 对于派生实现,如果服务器无法重新启动自身
  • 版本控制系统通常对每个版本进行“修补”。我使用git。如果您现在不知道git,请学习它!以下是Pythons Django和git的研讨会资料:


    现在让我看看这些信息是否足以在Django中实现这样的功能。当你的代码开始工作时,请在这里发布你的代码。

    你的问题对于StackOverflow来说太广泛了。我们写了一篇关于如何使用Git post receive钩子在PythonyWhere上进行基于Git push的部署的文章,包括一个如何运行单元测试并在失败时拒绝补丁的示例。也许有用?
    @post('/update') # bottle code
    def pull_own_source_code_and_restart():
        with inDirectory(server_repository):
            previous_commit = last_commit()
            text = git.pull()
            current_commit = last_commit()
        if previous_commit != current_commit:
            restart()
        return "Git says: {}".format(text)