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

J’ai mon application (node.js) déployée sur un VPS (Linux). J’utilise git hub comme référentiel. Comment puis-je déployer l’application automatiquement, sur git push?

Exemple en PHP:

Accédez à github dans votre repository github, puis cliquez sur “Admin”.

Cliquez sur l’onglet ‘Crochets de service’ => ‘URL WebHook’

et append

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

puis créez git_test.php

 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 à partir de github

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

J’utilise une combinaison du hook post-réception git et du superviseur de noeud pour réaliser un déploiement automatique simple (en supposant que vous utilisez un référentiel distant git sur cette machine).


Configurer votre crochet post-réception

Dans votre repository: 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 permissions de fichier: chmod +x hooks/post-receive

Git actualisera les fichiers de votre répertoire d’application après un push sur le repository.


Run Node with Node-Supervisor

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

Maintenant, exécutez simplement votre application de noeud avec node-supervisor et cela surveillera les modifications apscopes aux fichiers dans votre répertoire de travail:

supervisor /home/path/to/your/www/server.js (notez le supervisor au lieu du node ).

Probablement très tard pour repond ici. Mais j’ai trouvé ce projet sur github et semble faire ce que vous voulez, mais de manière beaucoup plus propre.

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

Vérifiez-le. Serait également intéressé de savoir ce que les autres en pensent en termes de commentaires et de commentaires.

À votre santé,
S

Dans un projet que je suis en train de développer, je suis les directives du shiny livre “Continuous Delivery” de Jez Humble (qui vaut bien une lecture).

Cela signifie créer un pipeline de déploiement utilisant une forme de serveur d’continuous integration (j’utilise Thoughtworks free community edition de Go ), chargé de vérifier d’abord la qualité, la complexité et les tests unitaires de votre code. Il peut ensuite suivre un pipeline de déploiement entraînant une poussée vers vos serveurs de production.

Cela semble très compliqué, mais ne doit pas nécessairement l’être, et rend l’ensemble du processus de création de code sûr et sans souci (pas de jours de lancement 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 un nœud à votre problème: node-cd

Il consiste en une application de nœud simple s’exécutant sur votre VPS qui recevra les hooks Github post-réception et exécutera le script que vous aimez (par exemple un script shell qui tuera votre application, git pull et le redémarrera).

Voici une autre implémentation simple de nodeJS.

C’est un serveur de noeud très simple qui fonctionne sur un nom d’hôte et un port que vous configurez et qui peuvent être configurés pour gérer les points d’ancrage Web post-réception GitHub. Et les actions pul / test / deploy peuvent être personnalisées pour faire tout ce que vous voulez. Dans l’implémentation actuelle, il s’agit d’une commande shell spécifiée en ligne dans le script du serveur nodeJS. Et il existe également un système de sécurité très simple basé sur secret_key.

https://github.com/shyam-habarakada/rscds

Mon serveur de transfert avait déjà un nœud installé et en cours d’exécution.

J’ai trouvé que le projet de déploiement facile utilise git.

git-play

Je pense que c’est la bonne façon pour vous.

Vérifiez-le.

Vous pouvez utiliser https://github.com/adnanh/webhook

Consultez le wiki pour une description détaillée de la création de crochets 🙂

Si vous voulez une solution basée sur python / tornado, j’ai écrit un script pour gérer les requêtes POST des services Webhook de Github. Vous pouvez le trouver sur https://github.com/Akobi/ops/tree/master/autodeploy

Il utilise essentiellement un fichier de configuration JSON pour répertorier les repos que vous attendez, les commandes que vous souhaitez exécuter et le répertoire dans lequel les commandes doivent être exécutées. Il vous suffit de modifier le fichier de configuration à votre convenance et de l’exécuter le script!

De plus, j’utilise Nginx comme proxy inverse pour transférer ces POST vers mon script. Vous pouvez trouver la configuration Nginx dans le même référentiel Github sous le dossier ‘nginx’.

Heureux de pousser!

La réponse de PHP est tout à fait légitime à mon avis, mais si vous préférez Ruby, j’ai blogué une solution. c’est la même chose que la réponse PHP, dans une langue différente. vous utilisez un hook Web et vous avez un simple script pour écouter les requêtes HTTP pertinentes.

http://gilesbowkett.blogspot.com/2012/06/heroku-style-deployment-on-ec2.html

J’ai créé mon propre outil de déploiement rudimentaire qui extrayait automatiquement les nouvelles mises à jour du référentiel – https://github.com/jesalg/SlimJim – Fondamentalement, il écoute le post-réception-hook de github et utilise un proxy pour déclencher un mise à jour du script.

Je suis le fondateur de https://commando.io et nous avons récemment annoncé une intégration avec GitHub via un service. L’intégration vous permet d’exécuter des exécutions sur des serveurs lorsque vous passez à un référentiel GitHub. C’est l’occasion idéale d’exécuter automatiquement des scripts de déploiement lorsque vous appuyez sur du code.

Une exécution est un script que vous écrivez à l’intérieur de Commando.io et qui peut être écrit en bash, perl, python, ruby, go ou node.js. Pour en savoir plus et voir un exemple de script d’exécution d’exécution de git pull , consultez notre annonce sur le blog: http://blog.commando.io/run-executions-via-github-push/

Deepl.io semble être un nouveau concurrent prometteur dans cet espace.

Caractéristiques (tirées de son site Web):

  • Accrochez les webhooks de GitLab & GitHub
  • Configurer plusieurs référentiels
  • Configurer plusieurs twigs par référentiel
  • Utilisez vos propres scripts de déploiement, PHP, shell ou les deux
  • Envoie des emails de confirmation

Notez également qu’il existe des services gratuits / peu coûteux, tels que REPOMAN.IO, qui automatisent presque tout cela pour vous.