La configuration d'un déploiement / build / IC cycle pour les projets PHP

Je suis un développeur solitaire la plupart de mon temps, de travailler sur un certain nombre de gros, principalement en PHP-base de projets. Je veux professionnaliser et d'automatiser la façon dont les changements dans le code de base sont traitées, et de créer un processus d'Intégration Continue qui fait la transition vers le travail en équipe possible sans avoir à faire des changements fondamentaux.

Ce que je fais maintenant, j'ai un environnement de test local pour chaque projet; - je utiliser SVN pour chaque projet; les changements sont testés localement, puis transféré à la version en ligne, généralement via FTP. La documentation de l'API est généré manuellement à partir du code source; les tests Unitaires sont quelque chose que je suis d'entrer dans, lentement, et ce n'est pas encore partie de ma routine quotidienne.

Le "cycle de production" je suis à envisager serait de faire ce qui suit:

  • Un ensemble de modifications obtient vérifié dans le SVN après avoir été testé localement.

  • J'ai commencer le processus de construction. Le SVN de la TÊTE de révision obtient vérifié, modifiés, si nécessaire, et prêt pour le téléchargement.

  • Documentation de l'API est généré automatiquement - si je n'ai pas de place dans le détail pourtant, à l'aide d'un modèle par défaut, la numérisation de l'ensemble de la base de code.

  • De la nouvelle révision est déployé à l'emplacement à distance via FTP (y Compris un répertoire à renommer, chmodding, de l'importation de bases de données, et l'aime.) C'est quelque chose que j'ai déjà comme phing pour beaucoup, mais je suis ouvert pour des solutions de rechange de cours.

  • Tests unitaires résidant dans un emplacement prédéfini, sont exécutés. Je suis informé au sujet de leur échec ou de succès en utilisant l'E-Mail, flux RSS ou (de préférence) de la sortie HTML que je peux saisir et de mettre dans une page web.

  • (en option) d'un utilisateur final "changelog" fichier texte dans un pré-défini l'emplacement est mis à jour avec un pré-définie de ce message de commit ("Il est maintenant possible de filtrer à la fois "foo" et "bar" dans le même temps). Ce message n'est pas nécessairement identique avec le SVN commit message, qui contient probablement beaucoup plus d'informations internes.

  • Des trucs comme les métriques de code, le code de vérification de style et ainsi de suite ne sont pas ma priorité pour l'instant, mais sur le long terme, ils le seront certainement. Des Solutions qui apportent cette out-of-the-box sont très aimablement regarda.

Je suis à la recherche d'

  • Commentaires et expériences de personnes qui sont ou ont été dans une situation similaire, et ont mis en œuvre avec succès une solution pour ce

  • Surtout, bonne étape-par-étape, des tutoriels et des procédures sur la façon de configurer

  • Des Solutions qui fournissent autant d'automatisation possible, par exemple par la création d'un squelette d'API, cas de test, et ainsi de suite pour chaque nouveau projet.

et aussi

  • Des recommandations de produits. Ce que je sais est phing/ant pour la construction, et phpUnderControl ou Hudson pour la partie création de rapports. Je les aime tous autant que je peux voir, mais j'ai bien sûr aucune expérience avec eux.

Je suis submergé avec le travail, j'ai donc une forte inclination vers des solutions simples. D'autre part, si un élément est manquant, je vais pleurer à ce sujet étant trop limitée. 🙂 Le Point-et-cliquez sur solutions sont aussi les bienvenus. Je suis également produit commercial recommandations qui peuvent travailler avec des projets PHP.

Ma configuration

Je travaille sur Windows localement (7 pour être exact), et la plupart des projets du client sont exécutées sur une pile LAMP, souvent sur de l'hébergement mutualisé (= pas de SSH).
Je suis à la recherche de solutions que je peux utiliser dans mon propre environnement. Je suis prêt à configurer une machine virtuelle Linux pour cela, pas de problème. Des solutions d'hébergement sont intéressants pour moi que si elles apportent tous les aspects décrits, ou sont suffisamment souples pour interagir avec les autres parties du processus.

Bounty
Je suis d'accepter la réponse que je ressens me donnera le plus de distance. Il y a beaucoup d'excellents commentaires ici, je souhaite que je pourrais accepter plus d'une réponse. Merci à tous!