Passer des paramètres à Capistrano
Je suis à la recherche dans la possibilité de l'utilisation de Capistrano comme un générique de déployer la solution. Par "générique", je veux dire, pas les rails. Je ne suis pas heureux avec la qualité de la documentation, je suis la recherche, bien que, certes, je ne suis pas à la recherche à ceux qui présument que vous déployez les rails. Donc, je vais juste essayer de pirater quelque chose basée sur quelques exemples, mais il ya un couple de problèmes, je suis confronté dès le départ.
Mon problème est que cap deploy
ne pas avoir assez d'informations pour faire quoi que ce soit. Surtout, il manque la balise pour la version que je veux déployer, et ce a à être passé sur la ligne de commande.
L'autre problème est de savoir comment je précise mon dépôt git. Notre serveur git est accessible par SSH sur le compte de l'utilisateur, mais je ne sais pas comment le changer deploy.rb
d'utiliser l'id de l'utilisateur dans le cadre de la scm URL.
Alors, comment dois-je accomplir ces choses?
Exemple
Je souhaite déployer le résultat du premier sprint de la deuxième version. C'est marqué dans le dépôt git comme r2s1
. Aussi, disons utilisateur "johndoe" reçoit la tâche de déploiement du système. Pour accéder au dépôt, il doit utiliser l'URL [email protected]:app
. De sorte que la distance URL du dépôt dépend de l'id d'utilisateur.
Les lignes de commande pour obtenir les fichiers seraient ceux-ci:
git clone [email protected]:app
cd app
git checkout r2s1
- Hey, j'espère que vous ne serez pas ignorer nos réponses. Commentaire d'eux, au moins, s'il vous plaît. 🙂
Vous devez vous connecter pour publier un commentaire.
Mise à jour: Pour Capistrano 3, voir scieslak la réponse ci-dessous.
A jarrad a dit, capistrano, le frêne est un bon set de base de l'aide de modules à déployer d'autres types de projets, qu'il n'est pas nécessaire à la fin de la journée. C'est juste un langage de script et la plupart des tâches sont effectuées avec le système de commandes et finissent par devenir presque script shell comme.
De passer des paramètres, vous pouvez définir le-s du pavillon lors de l'exécution de la pac afin de vous donner une valeur de la clé de paire. D'abord créer une tâche de ce genre.
Ensuite, démarrez votre tâche comme si.
Pour la dernière partie. Je vous recommande de créer sans mot de passe d'accès à l'aide de clés ssh à votre serveur. Mais si vous voulez le prendre à partir de l'actuel de l'utilisateur connecté. Vous pouvez faire quelque chose comme cela.
Mise à JOUR: Modifié pour fonctionner avec les dernières versions de Capistrano. Le tableau de configuration n'est plus disponible.
Des Paramètres globaux: Voir les commentaires Utiliser set :direction générale, fetch(:direction de, "un-par défaut-valeur") pour utiliser des paramètres à l'échelle mondiale. (Et de les transmettre avec-S à la place.)
configuration
a été désapprouvée:undefined local variable or method 'configuration' for #<Capistrano::Configuration:0x0000010145e708> (NameError)
. Maintenant, vous pouvez simplement utiliser des noms de variables. Comment ce travail il y a quelques mois??set :p, "default" if ! :p
Ce qui a maintenu le paramètre d'être effacé.set :branch, fetch(:branch, 'a-default-value')
pour utiliser des paramètres à l'échelle mondiale. (Et de les transmettre avec-S
à la place.)-S
: github.com/capistrano/capistrano/issues/807Mise à jour. Concernant le passage de paramètres à Capistrano 3 uniquement la tâche.
Je sais que cette question est assez vieux mais toujours pop-up s'ouvre d'abord sur Google lors de la recherche pour passer des paramètres à Capistrano tâche. Malheureusement, le fantastique de la réponse fournie par Jamie Sutherland n'est plus valide avec Capistrano 3. Avant de vous perdre votre temps à essayer sauf les résultats comme ci-dessous:
sorties :
et
sorties:
Les réponses valables pour Capistrano 3 fournis par @senz et Brad Dwyer vous pouvez trouver en cliquant sur ce or lien:
Capistrano 3 tirant arguments de ligne de commande
Pour l'exhaustivité de voir le code ci-dessous pour trouver les deux options que vous avez.
1ère option:
Vous pouvez effectuer une itération de tâches avec la clé et la valeur comme vous le faites régulièrement des hachages:
Assurez-vous il n'y a pas d'espace entre les paramètres lorsque vous appelez de la pac:
2ème option:
Tandis que vous appelez n'importe quelle tâche, vous pouvez affecter des variables d'environnement, puis de les appeler dans le code:
Pour affecter des variables environnementales, appel de la pac comme ci-dessous:
Espère que cela va vous faire économiser du temps.
Je vous suggère d'utiliser des variables d'environnement.
Il y a des choses comme ça (commande):
Cap config:
Et de prendre un coup d'oeil à la https://github.com/capistrano/capistrano/wiki/2.x-Multistage-Extension, peut-être cette approche sera utile pour vous.
if variables.include?(:var) ... else ... end
Que Jamie a montré déjà, vous pouvez passer des paramètres à des tâches avec la
-s
drapeau. Je veux vous montrer comment vous peut en outre utiliser une valeur par défaut.Si vous souhaitez travailler avec des valeurs par défaut, vous devez utiliser
fetch
au lieu de||=
ou vérifier lesnil
:Vous pouvez soit exécuter cette tâche par (utilise la valeur par défaut
production
pourfile
)ou (utilise la valeur
cron
pourfile
Découvrez capistrano-ash pour une bibliothèque qui aide avec les rails de déploiement. - Je l'utiliser pour déployer un PyroCMS application et il fonctionne très bien.
Voici un extrait de mon Capfile pour ce projet:
Je ne suis pas sûr de comprendre les deux dernières parties de la question. Fournir plus de détails et je serais heureux de vous aider.
MODIFIER après l'exemple donné:
Ensuite, chaque personne à déployer priveledges pouvez ajouter les éléments suivants à leur local ~/.caprc fichier:
.caprc
sont agréables, mais ne peut pas être obligatoire. Je veux passer les paramètres sur la ligne de commande.