我有一个包含我的应用程序的裸露git存储库的Amazon EC2实例。 我已经设置了一个post-receive钩子,在我的www中执行git checkout -f 。 推到这个回购我已经在我的本地存储库中设置一个远程,所以我可以运行git push dev ,一切似乎工作。
问题是这个代码也存在于GitHub上。 这有点多余,并且缺乏查看提交历史logging和更新进入开发(或即将生效)环境的活动的能力。 另外,如果我的EC2设置增长到一个集群,我不认为这是可能的运行git push dev并推送到集群中的多个回购。
GitHub有几个https post hook,可以告诉我的服务器有人提交了。 我的问题是,在不影响安全性或依赖于我所推荐的应用程序的情况下,做到这一点的最佳方法是什么。 例如,如果应用程序不可用,我仍然希望能够部署。
如果url是不可能猜测的,说https://myserver.com/SOME_RANDOM_TOKEN ,是否足以防止任何恶意? 我想避免必须为这个post-recieve URL实现auth。
应该如何设置configuration,因为没有简单的方法将某些东西从存储库中单独推送到服务器上? 分支应该是什么样的?
任何关于这些问题的答案或build议都会非常有帮助。 提前致谢。
你可以在Github上设置一个post-commit hook,但是它会和你用git push dev确定的很多问题一样 – Github只会打一个URL,而且不能直接用簇。
我build议不要寻找“聪明”的方式,而是用经过validation的,简单的部署脚本方法,对所有需要的机器进行必要的推/拉/踢/所需的任何操作。 像Capistrano,Vlad the Deployer这样的部署框架,以及其他一些选项(可以select多种语言),在一般情况下可以让生活更轻松,但即使是一个简单的shell脚本也会显着改善您的工作stream程。