Je suis un développeur seul la plupart de mon temps, travaillant sur un certain nombre de grands projets, principalement basés sur PHP. Je souhaite professionnaliser et automatiser la gestion des modifications apportées à la base de code et créer un processus d'intégration continue qui rend possible la transition vers le travail en équipe sans avoir à effectuer des changements fondamentaux.
Ce que je fais en ce moment, c'est que j'ai un environnement de test local pour chaque projet; J'utilise SVN pour chaque projet; les modifications sont testées localement, puis transférées vers la version en ligne, généralement via FTP. La documentation de l'API est générée manuellement à partir du code source; Les tests unitaires sont quelque chose que je commence lentement, et cela ne fait pas encore partie de ma routine quotidienne.
Le «cycle de construction» que j'envisage ferait ce qui suit:
Un ensemble de modifications est archivé dans SVN après avoir été testé localement.
Je lance le processus de construction. La révision SVN HEAD est extraite, modifiée si nécessaire et préparée pour le téléchargement.
La documentation de l'API est générée automatiquement - si je ne l'ai pas encore configurée en détail, en utilisant un modèle par défaut, en analysant toute la base de code.
La nouvelle révision est déployée sur l'emplacement distant via FTP (y compris le renommage de répertoire, chmodding, l'importation de bases de données, etc.). C'est quelque chose que j'aime déjà beaucoup pour le phing , mais je suis ouvert à des alternatives bien sûr.
Des tests unitaires résidant dans un emplacement prédéfini sont exécutés. Je suis informé de leur échec ou de leur succès en utilisant la sortie e-mail, RSS ou (de préférence) HTML que je peux saisir et mettre dans une page Web.
(en option) un fichier texte "changelog" de l'utilisateur final dans un emplacement prédéfini est mis à jour avec une partie prédéfinie du message de validation ("Il est maintenant possible de filtrer à la fois" foo "et" bar "en même temps Ce message n'est pas nécessairement identique au message de validation SVN, qui contient probablement beaucoup plus d'informations internes.
Des choses comme les métriques de code, la vérification du style de code, etc. ne sont pas mon objectif principal en ce moment, mais à long terme, elles le seront certainement. Les solutions qui apportent ce prêt à l'emploi sont très aimablement envisagées.
je cherche
Commentaires et expériences de personnes qui sont ou étaient dans une situation similaire, et qui ont réussi à mettre en œuvre une solution pour cela
Surtout, de bons didacticiels pas à pas et des procédures pas à pas sur la façon de configurer cela
Des solutions qui fournissent autant d'automatisation que possible , par exemple en créant une API squelette, des cas de test et ainsi de suite pour chaque nouveau projet.
et aussi
- Recommandations de produits . Ce que je sais jusqu'à présent, c'est phing / ant pour la construction, et phpUnderControl ou Hudson pour la partie rapport. Je les aime tous autant que je puisse voir, mais je n'ai bien sûr aucune expérience détaillée avec eux.
Je suis submergé de travail, j'ai donc une forte inclinaison vers des solutions simples. En revanche, s'il manque une fonctionnalité, je vais pleurer qu'elle soit trop limitée. :) Les solutions pointer-cliquer sont également les bienvenues. Je suis également aux recommandations de produits commerciaux qui peuvent fonctionner avec des projets PHP.
Ma configuration
Je travaille sur Windows localement (7, pour être exact) et la plupart des projets clients sont exécutés sur une pile LAMP, souvent sur un hébergement partagé (= pas de SSH distant). Je recherche des solutions que je peux exécuter dans mon propre environnement. Je suis prêt à configurer une machine virtuelle Linux pour cela, pas de problème. Les solutions hébergées ne m'intéressent que si elles fournissent tous les aspects décrits ou sont suffisamment flexibles pour interagir avec les autres parties du processus.
Bounty J'accepte la réponse qui, selon moi, me donnera le plus de kilométrage. Il y a beaucoup d'excellentes contributions ici, j'aimerais pouvoir accepter plus d'une réponse. Merci tout le monde!