Bom Dia a todos!
No meu trabalho diário, usamos NGINX+uWSGI+MongoDB como contêiner de aplicativo Python. Para versionamento e desenvolvimento colaborativo, estamos usando a instalação GIT em cada computador do desenvolvedor e um repositório GIT central para fins de entrega.
Tudo está funcionando bem e sem problemas, MAS há um pequeno problema.
Até agora, quando queremos entregar uma nova versão de nossos softwares internos, todos os desenvolvedores mesclam suas alterações e então um escolhido (geralmente o gerente do projeto) envia o produto final para o repositório "branch master" em nosso servidor GIT central.
Uma vez feito esse push, um script que está constantemente procurando no GIT recupera a nova versão e envia-a para nosso servidor uWSGI, que então carrega a nova versão para todas as novas conexões.
Agora, estamos nos perguntando como ser capaz de enviar push no servidor GIT e que o uWSGI carregue e sirva diretamente seus aplicativos da web a partir deste servidor GIT.
Existe alguém que já tenha uma solução semelhante ou uma configuração uWSGI para fazer isso?
Responder1
seu repositório git baseado em servidor não é nada com o qual você trabalharia; você sempre dependerá de um clone de repositório local, derivado desse repositório git central (IMHO). o que você pode fazer para se livrar de cronjobs feios: use git'sgancho pré/pós-recepçãono seu servidor git:
Além dos ganchos do lado do cliente, você pode usar alguns ganchos importantes do lado do servidor como administrador do sistema para impor praticamente qualquer tipo de política ao seu projeto. Esses scripts são executados antes e depois dos envios para o servidor. Os pré-ganchos podem sair diferentes de zero a qualquer momento para rejeitar o push, bem como imprimir uma mensagem de erro de volta ao cliente; você pode configurar uma política push tão complexa quanto desejar.
há também um informativodiscussão sobre stackoverflow sobre git-post-receive-hook para teste de site; especialmente. confira o primeiro link da resposta principalgit-site-como fazer
Responder2
Um truque que uso no site da minha empresa (gerado a partir de um repositório github) é adicionar essas opções ao 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