Le déploiement d'un Git sous-répertoire dans Capistrano
Mon maître direction de la mise en page ressemble à ceci:
/ <-- haut niveau
/client <-- desktop client fichiers source
/serveur <-- application Rails
Ce que je voudrais faire est que tirer vers le bas le serveur /répertoire dans mon deploy.rb
, mais je n'arrive pas à trouver quelque moyen de le faire. Le /répertoire client est énorme, donc la configuration d'un crochet de copier /serveur /ne fonctionne pas très bien, il faut seulement tirer vers le bas l'application Rails.
Vous devez vous connecter pour publier un commentaire.
Sans sale de bifurquer à l'action, mais encore plus sale !
Dans ma config/deploy.rb :
Puis j'ai ajouté cette nouvelle stratégie, à mon Capfile :
install_plugin
méthode?Pour Capistrano 3.0, j'utilise la suite:
Dans mon
Capfile
:Et dans mon
deploy.rb
:Tout le code est dans la stratégie
release
méthode, qui utilisegit archive
pour archiver uniquement un sous-répertoire de l'opération, puis utilise le--strip
argumenttar
pour extraire l'archive au bon niveau.Mise à JOUR
Que de Capistrano 3.3.3, vous pouvez maintenant utiliser le
:repo_tree
variable de configuration, ce qui rend cette réponse obsolètes. Par exemple:Voir http://capistranorb.com/documentation/getting-started/configuration.
set :repo_tree, 'demo_app/server'
ouset :repo_tree, 'server'
Nous sommes aussi le faire avec Capistrano par clonage toute la logithèque, la suppression des fichiers et des dossiers inutilisés et déplacer le dossier souhaité en haut de la hiérarchie.
déployer.rb
Tant que le projet ne soit pas trop grand, cela fonctionne assez bien pour nous, mais si vous le pouvez, créez un référentiel pour chaque composant et de les regrouper avec les submodules.
Vous pouvez avoir deux dépôts git (client et serveur) et les ajouter à un "super-projet" (app). Dans ce "super-projet", vous pouvez ajouter les deux référentiels comme submodules (vérifier ce tutoriel).
Une autre solution possible (un peu plus sale) est d'avoir des branches séparées pour le client et le serveur, et ensuite, vous pouvez tirer du 'serveur' de la branche.
Il y a une solution. Prenez crdlo de patch pour capistrano et la capistrano source à partir de github. Supprimer capistrano gem, appy le patch, le programme d'installation.rb installer, et vous pouvez alors utiliser son très simple ligne de configuration
set :project, "mysubdirectory"
pour définir un sous-répertoire.Le seul piège est que apparemment github n'est pas "l'appui de la commande archive" ... au moins quand il l'a écrit. Je suis avec mon propre repo git sur svn et il fonctionne très bien, je n'ai pas essayé avec github, mais j'imagine que si suffisamment de personnes se plaignent qu'ils vont ajouter de la fonctionnalité.
Également voir si vous pouvez obtenir capistrano auteurs d'ajouter cette fonctionnalité dans la pac à ce bug.
Pour Capistrano 3, basé sur @Thomas Fankhauser réponse:
Malheureusement, git ne fournit aucun moyen pour ce faire. Au lieu de cela, le " git " est d'avoir deux référentiels -- le client et le serveur, et clone de celle(s) dont vous avez besoin.
J'ai créé un ciselée qui fonctionne avec Capistrano 3.x dans les précédents anwers et autres informations trouvées sur github:
Il est également disponible comme un Résumé de l'information sur Github.
Semble que c'est aussi de ne pas travailler avec codebasehq.com j'ai donc fini par faire de capistrano tâches qui nettoie le désordre 🙂 Peut-être il y a en fait moins hacky façon de le faire en remplaçant certains capistrano tâches...
Ce travail a été pour moi pendant quelques heures.
Vous pouvez déclarer une variable pour le répertoire (ici rails_app).
Nous allons voir comment robuste, il est. À l'aide de "avant", c'est assez faible.