36 votes

Aidez-moi à améliorer mon flux de travail de déploiement continu

J'ai été le développement d'un flux de travail pour la pratique d'un des plus automatisés déploiement continu du cycle d'un projet PHP. J'aimerais avoir quelques commentaires sur les processus ou les goulots d'étranglement techniques dans ce flux de travail, suggestions d'amélioration, et des idées sur la façon de mieux automatiser et d'augmenter la facilité d'utilisation pour mon équipe.


Composants principaux:


EDIT: j'ai changé le flux de travail graphique à prendre ircmaxwell les contributions du compte en: supprimant PHPUnits'extension pour Selenium RC et l'exécution de ces tests dans le cadre de la QC étape, l'ajout d'une QC scène; le déplacement de l'INTERFACE utilisateur de test après l'examen du code, mais avant fusionne; le déplacement fusionne après le QC de la scène; le déplacement de déploiement après la fusion.

Ce flux de production graphique décrit le processus. Mes questions / pensées ou des préoccupations à suivre.

Continuous Deployment Workflow

Mes préoccupations et les idées / questions:

  • La difficulté globale à l'aide de ce système.

  • Participation de temps.

  • La difficulté employant Gerrit.

  • La difficulté employant Puppet.

  • Nous allons déployer sur Amazon EC2 cas plus tard. Si nous allons sur la configuration de l' Debian des forfaits avec des Puppet et le déploiement d' Linode tranches d'aujourd'hui, il existe un potentiel pour un travail de déploiement sur Linode à la pause sur EC2? Devrions-nous plutôt nous faire de notre construit et les déploiements sur EC2 de l'obtenir-aller?

  • Autre question: re: EC2 et Puppet. Nous tenons aussi compte de l'aide Scalr comme une solution. Serait-il comme beaucoup de sens pour éviter la surcharge de l' Puppet pour ce seul et investir dans Scalr à la place? J'ai un secondaire (ha!) ici une préoccupation au sujet des coûts; l' Selenium tests ne devraient pas être en cours d'exécution que souvent qu' EC2 construire des instances de fonctionnement 24/7, mais pour quelque chose comme cinq minutes de construire, de payer pour une heure de EC2 d'utilisation semble un peu beaucoup.

  • Possible du processus de goulets d'étranglement sur les fusions.

  • Pourrait", Un" être déplacé?

Crédits: les Portions de ce flux de travail sont inspirés par Digg est génial post sur le déploiement continu. Le flux de travail graphique ci-dessus est inspiré par le système d'exploitation Android de Projet.

10voto

ircmaxell Points 74865

Combien de personnes y travaillent? Si vous ne l'avez peut-être 10 ou 20 développeurs, je ne suis pas sûr qu'il aura du sens pour mettre un complexe de flux de travail en place. Si vous êtes à la gestion de la 500, bien sûr...

Mon sentiment personnel est que BAISER. Keep It Simple, Stupid... Vous voulez un processus qui est à la fois efficace, et le plus important: simple. Si c'est compliqué, soit personne ne va le faire à droite, ou après le temps les pièces de glissement. Si vous la faire simple, il deviendra une seconde nature et, après quelques semaines, personne ne remettrait en question le processus (Ainsi, la sémantique de toute façon)...

Et l'autre sentiment personnel est toujours exécuter l'ensemble de vos tests UNITAIRES. De cette façon, vous pouvez passer d'un ensemble arbre de décision dans votre organigramme. Après tout, quoi de plus cher, à quelques minutes de temps CPU, ou le cerveau cycles de comprendre la différence entre l'partielle des essais de passage et le massif de test à défaut. Rappelez-vous, un échec est un échec, et il n'y a aucune raison pratique que le code devrait jamais être montrée à un examinateur qui a le potentiel de faire échouer le construire.

Maintenant, le Sélénium tests sont généralement assez cher, je vais peut-être d'accord pour pousser ceux jusqu'après l'examinateur approuve. Mais vous aurez besoin de penser à celle-là...

Oh, et si j'étais la mise en œuvre de la présente, je mettrais un officiel QC stade là. Je veux l'homme testeurs de regarder toutes les modifications qui sont apportées. Oui, le Sélénium peut vérifier les choses que vous connaissez, mais que seul un humain peut trouver des choses que vous n'avez pas pensé. Feed-back de leurs conclusions dans de nouveaux Sélénium et des tests d'Intégration pour éviter les régressions...

3voto

Eishay Smith Points 712

Importent pour faire vos tests extrêmement rapide, c'est à dire pas d'IO et de la capacité à exécuter en parallèle et distribué des tests. Ne sais pas comment elle est applicable avec php, mais si vous pouvez tester des unités de code dans la mémoire db et se moquent de l'environnement, vous serez mieux.

Si vous avez un AQ/CQ ou tout de l'homme dans le chemin entre la validation et la production, vous auriez un problème de faire un plein déploiement continu. La clé est de votre confiance, de votre test, de surveillance et de réponse automatique (système immunitaire) afin d'éliminer les risques d'erreurs processus d'évolution de l'homme à partir de votre système.

2voto

kipper Points 81

Tous les transferts entre les fonctions ont pour effet de ralentir les choses, et avec ça, une augmentation de la quantité de changement (et donc le risque) qui va en à un déploiement.

Manuel de la qualité des portes sont, par définition, une acceptation du fait que la qualité n'a pas été construite dès le départ. La seule raison pour laquelle le code doit être examiné plus tard est parce qu'il existe la croyance que la qualité n'est pas bonne suffisant.

Je suis en train d'essayer de supprimer officiel de la revue de code à partir de nos pipelines exactement pour cette raison. Il provoque des commentaires des retards, et en citant Martin Fowler:

"Le point de l'ensemble de l'Intégration Continue consiste à fournir une rétroaction rapide. Rien suce le sang d'une activité de CI plus qu'une construction qui prend du temps. "

Au lieu de cela, je voudrais faire de la revue de code quelque chose que les requérants demandent si nécessaire, ou sinon se fait au moment du codage par les membres de l'équipe, peut-être un la XP paire de programmation.

Je pense qu'il devrait être votre objectif une fois que le code est fusionné au contrôle de code source, il n'y a pas plus d'intervention manuelle.

1voto

Eran Harel Points 1175

Je ne sais pas si c'est pertinent pour PHP, mais vous pouvez le remplacer au moins au moins certains de la révision du code de la scène avec l'analyse statique.

La qualité de la révision du code est en s'appuyant sur la qualité de l'ensemble des évaluateurs, tandis que l'analyse statique s'appuie sur les meilleures pratiques et les modèles, et est entièrement automatique. Je ne dis pas que la révision du code devrait être abandonné, simplement, je pense qu'il peut être fait hors ligne.

Voir

http://en.wikipedia.org/wiki/Static_code_analysis

http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis

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