92 votes

Comment puis-je déployer automatiquement mon application après un git push ( GitHub et node.js) ?

J'ai mon application (node.js) déployée sur un VPS (linux). J'utilise git hub comme dépôt. Comment puis-je déployer l'application automatiquement, sur git push ?

63voto

Arius2038 Points 2217

Exemple en PHP :

Naviguez sur github dans votre dépôt github et cliquez sur "Admin".

cliquez sur l'onglet "Service Hooks" => "WebHook URLs".

et ajouter

http://your-domain-name/git_test.php

puis créez git_test.php

<?php 
try
{
  $payload = json_decode($_REQUEST['payload']);
}
catch(Exception $e)
{
  exit(0);
}

//log the request
file_put_contents('logs/github.txt', print_r($payload, TRUE), FILE_APPEND);

if ($payload->ref === 'refs/heads/master')
{
  // path to your site deployment script
  exec('./build.sh');
}

Dans le build.sh vous devrez mettre les commandes habituelles pour récupérer votre site depuis github

23voto

Wes Johnson Points 1845

Il y a eu quelques mentions de crochets Git comme réponses/commentaires, ce qui a fonctionné pour moi dans le passé donc voici ma recette si quelqu'un d'autre a besoin de plus de détails.

J'utilise une combinaison de git post-receive hook y superviseur de nœud pour réaliser un simple déploiement automatique (en supposant que vous utilisez un dépôt git distant sur cette machine).


Configurez votre accroche post-recette

Dans votre référentiel : sudo vi hooks/post-receive

Et ça devrait ressembler à quelque chose comme :

#!/bin/sh
GIT_WORK_TREE=/home/path/to/your/www
export GIT_WORK_TREE
git checkout -f

Définir les autorisations de fichiers : chmod +x hooks/post-receive

Git rafraîchira les fichiers dans le répertoire de votre application après un push vers le repo.


Exécuter Node avec Node-Supervisor

Vous devrez installer Node-Supervisor sur votre machine en tant que module global de nœud : sudo npm install supervisor -g

Maintenant, il suffit de lancer votre application node avec node-supervisor pour qu'elle surveille les changements de fichiers dans votre répertoire de travail :

supervisor /home/path/to/your/www/server.js (note supervisor au lieu de node ).

18voto

Saurabh Points 1092

Il est probablement très tard pour répondre ici. Mais j'ai trouvé ce projet sur github et il semble faire ce que vous voulez faire mais d'une manière beaucoup plus propre.

https://github.com/logsol/Github-Auto-Deploy

Vérifiez. Je serais également intéressé de savoir ce que les autres en pensent en termes de commentaires et de votes positifs.

A la vôtre,
S

8voto

Roy Points 216

Dans le cadre d'un projet que je développe actuellement, je suis les directives décrites dans le brillant ouvrage de Jez Humble intitulé "Continuous Delivery" (qui vaut la peine d'être lu).

Cela signifie qu'il faut créer un pipeline de déploiement en utilisant une forme de serveur d'intégration continue (j'utilise l'édition communautaire gratuite de Thoughtworks). Allez sur ), qui est chargé de vérifier en premier lieu la qualité et la complexité de votre code et d'exécuter des tests unitaires. Il peut ensuite suivre un pipeline de déploiement aboutissant à une poussée vers vos serveurs de production.

Cela semble très compliqué, mais ne doit pas l'être, et rend l'ensemble du processus d'écriture du code et de sa mise en production sûr et sans souci (pas de jours de publication effrayants !).

J'utilise un pipeline de déploiement complet pour les systèmes actifs, et une version réduite pour les modules npm que j'écris, et les deux partagent la même technique de déploiement en un clic.

8voto

A21z Points 372

Je viens de publier une solution basée sur les nœuds pour votre problème : node-cd

Il consiste en une simple application node fonctionnant sur votre VPS qui recevra Crochets post-recette Github et exécutez un script que vous souhaitez (par exemple un shell script qui tuera votre application, git pull, et la redémarrera).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X