J'utilise capistrano pour déployer une application RoR. La base de code est dans un référentiel git et le branchement est largement utilisé dans le développement. Capistrano utilise un deploy.rb
fichier pour ses paramètres, l'un d'entre eux étant la branche à partir de laquelle effectuer le déploiement.
Mon problème est le suivant: disons que je crée une nouvelle branche A à partir de master . Le fichier Deploy référence maître branche. Je modifie cela, afin que A puisse être déployé pour tester l'environnement. J'ai fini de travailler sur la fonctionnalité et fusionne la branche A dans master . Étant donné que le deploy.rb
fichier de A est plus frais, il se fusionné et maintenant deploy.rb
en maître des références de la branche A . Il est temps de modifier à nouveau.
C'est beaucoup de modifications manuelles apparemment inutiles - le paramètre doit toujours correspondre au nom de la branche actuelle. En plus de cela, il est facile d'oublier de modifier les paramètres à chaque fois.
Quelle serait la meilleure façon d'automatiser ce processus?
Edit: Il s'avère que quelqu'un avait déjà fait exactement ce dont j'avais besoin :
Ce matin, j'ai eu l'occasion de déployer une branche d'un référentiel git sur un serveur intermédiaire, mais je n'avais pas la moindre idée de comment. Une recherche rapide dans le code source de capistrano a révélé que je pouvais utiliser set
:branch "branch_name"
dans mon script de déploiement. Je l'ai essayé et cela a fonctionné. J'ai alors pensé que je devrais effectuer un changement similaire dans toutes mes succursales. Bien sûr, je suis paresseux et je me demande s'il n'y a pas de meilleur moyen.Si vous n'êtes pas familier avec git, la sortie de la commande git branch est une liste de branches avec un astérisque marquant celle actuellement extraite sur votre machine locale. Par exemple:
> git branch * drupal_authentication fragment_caching master
Donc, j'ai pensé, que se passerait-il si je viens d'analyser la sortie et de rechercher la branche marquée comme actuelle:
set :branch, $1 if `git branch` =~ /\* (\S+)\s/m
Je suis maintenant en mesure de déployer n'importe quelle branche actuelle sur ma machine locale à partir d'un seul script de déploiement partagé.