使用 uWSGI 從 GIT 提供文件

使用 uWSGI 從 GIT 提供文件

大家,早安!

在我的日常工作中,我們使用 NGINX+uWSGI+MongoDB 作為 Python 應用程式容器。對於版本控制和協作開發,我們在每台開發人員電腦上使用 GIT 安裝,並使用中央 GIT 儲存庫進行交付。

一切都運作良好且順利,但有一個小問題。

到目前為止,當我們想要交付內部軟體的新版本時,所有開發人員都會合併他們的更改,然後選定的開發人員(通常是專案經理)將最終產品推送到我們中央GIT 伺服器上的「分支主”存儲庫中。

一旦進行推送,一個持續查找 GIT 的腳本就會檢索新版本並將其推送到我們的 uWSGI 伺服器上,然後伺服器為所有新連接載入新版本。

現在,我們想知道如何能夠在 GIT 伺服器上進行推送,並且 uWSGI 直接從該 GIT 伺服器載入並提供其 Web 應用程式。

有沒有人已經有類似的解決方案或 uWSGI 配置來做這件事?

答案1

基於伺服器的 git-repo 不是你可以使用的;你將始終依賴從中央 git-repo 派生的本地存儲庫克隆(恕我直言)。你可以做什麼來擺脫醜陋的 cronjobs:使用 git前/後接收鉤子在你的 git 伺服器上:

除了客戶端掛鉤之外,您還可以作為系統管理員使用幾個重要的伺服器端掛鉤來為您的專案實施幾乎任何類型的策略。這些腳本在推送到伺服器之前和之後運行。 pre hooks 可以隨時以非零值退出來拒絕推送並向客戶端列印錯誤訊息;您可以根據需要設定複雜程度的推送策略。

還有一個資訊豐富的stackoverflow-關於用於網站暫存的 git-post-receive-hook 的討論;尤其是查看最佳答案中的第一個鏈接git 網站操作指南

答案2

我在公司網站(它是從 github 儲存庫產生)中使用的一個技巧是將這些選項新增至 uWSGI:

; reload the server everytime the repository is updated
touch-reload = .git/index
; every minute pull from the repository
cron = -1 -1 -1 -1 -1 git pull

相關內容