2015-10-22 56 views
0

我們有一個用Yii 1.1編寫的應用程序,我們維護和控制應用程序和服務器的各個方面。它存在於各種服務器上。我們通過git在本地維護代碼庫併發布到我們的GitHub倉庫。當我們推出更新或錯誤修復時,我們必須進入每個框並逐個更新它們。這隻會增加我們部署的應用程序和服務器越來越耗時。使用yiic通過github更新應用程序

我們希望通過遠程管理部分來簡化git pull流程。我們想了解一下GitHub WebHooks功能,但我們不希望它是自動的。我們想要控制哪些應用程序獲取更新。接下來,我們考慮使用將存在於代碼庫中的yiic命令,並且可以運行shell git pull腳本。安全是整個事情的重中之重。

如果我們創建一個yiic類,將處理已定義的git命令以及從控制器向yiic命令進行身份驗證的安全令牌層,您會不會擔心安全問題?也許有人做過類似的事情,可以對他們的方法和他們的問題有所瞭解?

回答

1

我創建了一個管理員屏幕,我可以輕鬆地讓每個用戶從那裏的個人開發環境中的分支切換(無需訪問服務器)。我通過在PHP中使用exec並使用git客戶端鉤子(合併後)https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks來更新所有文件夾和文件的權限(您無法確定它們是否正確)。爲了合併,我使用了bitbucket API。

對於我們的現場環境和預生活環境,我們使用deploybot.com。如果某個分支被更新,這將會上傳文件。預生活環境將自動更新。對於現場環境,我必須按下一個按鈕(將自動執行此操作,以便在我到達工作之前使用API​​在星期一上午完成此操作)。如果它只是拉動我會使用這樣的服務。雖然它不拉,但上傳/刪除新的,改變或刪除文件。在管理面板中,您可以添加一個按鈕,使api調用允許deploybot部署代碼。它只是更容易,免費或非常便宜(取決於您的需求)

關於安全性。我想這將取決於您的管理員屏幕和您的github帳戶的安全性。如果人們可以訪問你的github代碼,他們可以改變你的實時代碼,但這實際上總是一個'問題'。如果他們有權訪問你的管理員屏幕,我想你有更大的問題,然後他們有能力拉代碼。

+0

Jeroen,感謝您對DeployBot的深入瞭解,我會仔細研究一下,看看它是否可以使用。關於shell_exec()腳本的主題。你使用了什麼方法,'sudo'命令運行或授予Apache運行repo權限? – csteel

+0

我們給apache sudo權限僅僅對git pull,所以客戶端使用chown/chmod掛鉤可以工作。我不是一個真正的服務器管理員(在工作中學習),或者對安全性瞭解很多,所以不能說它確實是不應該做的事情的安全。然而,如果有人能夠以某種方式濫用這一點,我會有更大的擔憂。 – Jeroen

+0

謝謝。現在我們正在嘗試部署機器人。它似乎處理我們需要的東西,而不需要爲它建立任何東西。感謝您的建議和信息! – csteel