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 ?
Réponses
Trop de publicités?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
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
).
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
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.
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).