45 votes

Comment gérer votre application Perl développement, la construction et le déploiement?

J'ai encore à venir avec un moyen efficace de gérer le développement, la construction et le déploiement de mes applications Perl. Je voudrais savoir comment vous avez résolu ce problème et/ou ce que vous aimeriez avoir dans une application système de construction que vous n'avez pas maintenant.

Veuillez décrire le type d'application (c'est une application web, il tourne sur un serveur, ou ne vous le bundle à l'aide de la valeur NOMINALE ou PerlApp de sorte que vous pouvez exécuter sur perlless systèmes).

Éléments clés d'un système de construction doit fournir:

  • Contrôle de bibliothèques.
    • Il devrait être possible de vérifier une bibliothèque de la distribution dans mon répertoire dev pour l'utiliser dans mon construire.
    • Il devrait être facile à exécuter perl avec un @INC de la valeur et utiliser les répertoires appropriés.
    • Il devrait être possible d'obtenir une liste de modules qui sont fournies par le système de perl installer.
  • Makefile/Construire l'intégration
    • Il devrait être facile de faire un test global l'ensemble de l'application par l'émission d'un seul make test ou une commande similaire.
  • Contrôle de Version amical
    • la structure ne doit pas interférer avec l'utilisation normale de CVS, SVN et les autres version les systèmes de contrôle.
  • La croix-plate-forme
    • Le système devrait fonctionner sur Win32 et Unix systèmes dérivés au minimum.
    • Idéalement, les outils devraient fonctionnent de manière identique dans tous les lieux où perl fonctionne.
  • Simple installer Perl
    • Il ne devrait pas être nécessaire d'installer perl dans un répertoire spécial dans le cadre de la configuration de l'environnement.
  • Démarrage simple
    • Démarrage d'une application doit être surtout un processus automatisé. Quelque chose le long des lignes de Module::Starter ou h2xs devrait être disponible à la disposition d'une structure de base et la création de fichiers standard.

Cross-posté sur Perlmonks.

17voto

brian d foy Points 71781

Il y a beaucoup de choses que je pourrais écrire sur ce

  1. Contrôle de bibliothèques - je créer mes propres versions de CPAN avec les modules que je veux. La dernière version de l' App::Cpan est doté de plusieurs fonctionnalités, telles que l' -j option pour charger un temps configurations, pour aider à cela. Une fois que vous avez cela, vous pouvez le distribuer sur un pouce de disque ou le CD qui dispose de tous les modules du CPAN.pm de la configuration et de tout ce dont vous avez besoin. Avec un peu de programmation pour vous créer un run_me script qui rendent tout cela possible.

  2. Makefile/Construire l'intégration - je ne suis pas d'intégrer les Makefiles. C'est la route à la catastrophe. Au lieu de cela, je fais des tests d'intégration avec le haut-niveau module d'application, qui vérifie que toutes ses dépendances trop. L' -t passer à l'cpan commande est utile pour tester le module dans le répertoire de travail actuel:

    cpan -t .

Il existe différents intergation infrastructures de test que vous pouvez utiliser aussi. Vous définissez PERL5LIB à quelque chose de vide (avec seulement les modules de base dans le codées en dur @INC répertoires) alors cpan a tout installer à partir de zéro.

  1. Contrôle de Version friendly - il n'a pas beaucoup d'importance ce que vous utilisez. La plupart des choses ont une sorte d'exportation où vous pouvez obtenir tout sans le contrôle à la source des choses. Git est très agréable, car il ne dispose que d'un minimum de pollution dans les cas normaux.

  2. La croix-plate-forme - tout ce que j'ai mentionné fonctionne très bien sur Windows et Unix.

  3. Simple installer Perl - cette partie est plus délicate, et je pense que vous allez dans le mauvais sens. Toute la durée de plusieurs choses dépendent de la même perl, quelqu'un va se louper pour les autres. Je vous recommande vraiment de ne pas utiliser le système de Perl pour le développement de l'application, de sorte que vous ne compromettent pas le fonctionnement du système. Au minimum, chaque application doit installer tous les non-modules de base dans leurs propres répertoires elles ne sont donc pas en concurrence avec d'autres applications.

  4. Démarrage simple, c'est une simple question de programmation.

BONUS: je n'utilise pas de Module::Démarreur. C'est le mauvais chemin à parcourir puisque vous avez à dépendre de ce Module::Starter pense que vous devriez faire. J'utilise la Distribution::table de cuisson qui prend tout simplement un répertoire de Template Toolkit de modèles et de processus d'eux pour leur donner votre répertoire de distribution. Vous pouvez faire ce que vous aimez. Comment vous obtenez l'initiale de modèles est à vous.

7voto

Gaurav Points 1064

Je travaille sur une jolie petite application web, et nous sommes en train de travailler sur l'amélioration de notre déploiement (amélioration de "passer une journée à la configuration de tous les modules dont nous avons besoin sur Windows et ensuite jeter les fichiers à elle jusqu'à ce que tout fonctionne", de sorte que certains d'amélioration).

Nous avons trois choses que nous devons faire pour mettre en place notre site internet:

  1. Un module Perl fait à l'aide de Module::Starter, contenant un Config module qui détient l'ensemble du site, les options de configuration. Lors de l'installation, ce module (à l'aide d' MakeMakers' PREREQ_PM afin de vérifier que tous les modules dont nous avons besoin ont déjà été installés). Tous les modules qui n'ont pas besoin d'être installé avant ce module peut être installé.
  2. Un peu de SQL fichiers qui doivent être exécutées pour configurer la base de données.
  3. Le Perl CGI fichiers qui composent le site. Aussi longtemps que Apache est fait pour eux, le site "fonctionne". Cela comprend le commun des modules de code utilisé par tous les fichiers Perl.

Le déploiement consiste en me tirant de tout le monde branches Git et de l'emballage d'une version. On peut ensuite remettre ce fil pour des tests en local, ou sur une instance Amazon EC2. Une fois que nous sommes bons à la libération, soit nous installer sur la dernière version, ou de déplacer la base de données sur les essais d'instance et de faire que la nouvelle instance.

De les comparer à vos critères:

  1. Contrôle de bibliothèques: un Peu. Nous utilisons des modules de CPAN assez largement. Pour essayer une nouvelle version, nous mettons à jour notre propre version d'un module avant de faire cette mise à niveau sur le serveur de production. Nous maintenir manuellement une liste, mais depuis notre base de code est assez petit, il n'est pas difficile de comprendre quels sont les modules utilisés (via greping pour les lignes commençant par use, par exemple).
  2. Makefile/Construire l'intégration: Oui. Tout Makefile choses liées à des UE::MM l'installation. Nous n'avons pas le mondial des tests, mais depuis l'ensemble de notre suite de test récemment retrouvé dans un dossier, j'espère que nous allons bientôt avoir quelque chose que vous pouvez exécuter prove sur directement.
  3. Le contrôle de Version de l'environnement: Oui. L'ensemble de notre code source est contenue dans un seul dossier, sans trop de doublons.
  4. La croix-plate-forme: Oui. Nous avons beaucoup de choses bizarres qui se passaient dans MakeMaker pour nous permettre de faire cela, mais comme une startup, avoir de la croix-plate-forme de code nous donne une grande flexibilité. Nous essayons d'utiliser Perl modules de base et des outils, et Pur Perl modules du CPAN, autant que possible.
  5. Seul Perl installer: Oui. Nous pouvons nous occuper de Perl être n'importe où, et installé dans les paramètres, tant que tous en Perl propre module outils de travail - il y a eu beaucoup d'efforts mis en obtenant CPAN, EU::MM et les autres fonctionnent bien sur tous les systèmes, et il semble dommage de le gaspiller.
  6. Démarrage simple: Pas vraiment. Ce système a évolué (c'est à dire: n'a pas été conçu de manière intelligente) à partir d'un dossier unique de tous les fichiers source et un fichier texte avec une liste de modules qui doivent être installés. Alors que l'officialisation de test pour les modules installés est une énorme amélioration, il faut encore nous quelque chose comme un jour de cette série, consacrée principalement l'installation de notre condition modules (pas tous d'entre eux sont faciles à installer sur Windows). Je suis l'espoir d'utiliser le Perl Win32 communauté pour essayer et obtenir de problèmes avec la problématique des modules de CPAN aplanies.

Rappelez-vous, il est vraiment simple site web, pas de XS, compliqué framework web, ou une telle. Nous avons également pris en charge uniquement cette configuration par le biais de sur les deux versions, donc nous n'avons pas assez d'expérience sur la manière dont cela va fonctionner comme le code devient plus compliqué et nos plates-formes de déploiement devenir de plus en plus varié. J'apprécierais vraiment des suggestions ou des commentaires sur notre système.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X