我们有一个用Yii 1.1编写的应用程序,我们维护和控制应用程序和服务器的所有方面。它存在于各种服务器上。我们通过git在本地维护代码库并发布到我们的GitHub仓库。当我们推出更新或错误修复时,我们必须进入每个框并一次更新一个。这只会越来越耗费我们部署的应用程序和服务器。
我们希望通过远程管理部分简化git pull
流程。我们考虑过使用GitHub WebHooks功能,但我们并不希望它是自动的。我们希望控制哪些应用程序获得更新。接下来,我们考虑使用将存在于代码库中的yiic
命令,并且可以运行shell git pull
脚本。安全是这件事的重中之重。
如果我们创建一个yiic类来处理定义的git
命令,并使用从控制器向yiic
命令进行身份验证的安全令牌层,那么您是否预见到安全问题?也许有人做过类似的事情,可以对他们的方法和问题有所了解吗?
答案 0 :(得分:1)
我创建了一个管理界面,我可以轻松地让每个用户从个人开发环境中的分支切换(无需访问服务器)。我这样做是通过在PHP中使用exec
并使用git客户端钩子(合并后)https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks来更新所有文件夹和文件的权限(你无法确定它们是否在拉动之后)。对于合并等,我使用bitbucket API。
对于我们的实时环境和预生活环境,我们使用deploybot.com。如果某个分支更新,这将上传文件。预生活环境将自动更新。对于现场环境,我必须按一个按钮(将自动执行此操作,以便在我上班前使用API周一早上完成)。如果它只是拉动我将使用这样的服务。虽然它不拉,但上传/删除新的,更改或删除文件。然后,在管理面板中,您可以添加一个按钮,该按钮进行api调用,允许deploybot部署代码。它更容易,更自由或非常便宜(取决于您的需求)
关于安全性。我想这将取决于您的管理屏幕和您的github帐户的安全性。如果人们可以访问你的github代码,他们可能会改变你的实时代码,但这确实是一个“问题”。如果他们可以访问您的管理界面,我猜您有更大的问题,那么他们就可以提取代码。