Notre processus de génération/déploiement est très fastidieux, suffisamment manuel et sujet aux erreurs. Pourriez-vous faire des propositions d'amélioration? Permettez-moi de décrire notre stratégie de déploiement et notre processus de construction. Nous développons un système appelé Application Server (AS pour faire court). Il s'agit essentiellement d'une application Web basée sur les servlets hébergée sur le serveur Web JBoss. AS peut être installé dans deux "environnements". Chaque environnement est un répertoire avec le code de la webapp. Ce répertoire est placé sur le stockage réseau. Le stockage est monté sur plusieurs serveurs de production où les instances JBoss sont installées. Le répertoire est lié au répertoire webapps
de JBoss. Ainsi, toutes les instances de JBoss utilisent le même code pour l'environnement. La configuration de JBoss est séparée de l'environnement et mise à jour par instance.Comment améliorer notre processus de construction et de déploiement?
Nous avons donc deux types de patchs: patches de webapp (pour différents environnements) et les correctifs de configuration (pour par exemple la configuration)
Patch est un fichier exécutable. En fait, c'est un script bash avec un paquet rpm binaire intégré. L'installation est assez simple: vous n'avez qu'à exécuter le fichier et éventuellement répondre à quelques questions. Le point important est que le correctif n'est pas un système dans son ensemble - il contient seulement quelques classes avec des correctifs et/ou des scripts qui modifient les fichiers de configuration. Les classes sont copiées dans WEB-INF/classes (AS est déployé en tant que répertoire éclaté).
La façon dont nous construisons ces chemins est:
- Nous prenons des fichiers correctifs précédents et de les copier.
- Nous modifions le contenu du patch. La partie la plus importante est RPM spec. Là, nous changeons le nom du patch, changeons ses paquets rpm prérequis et notons les commandes bash pour sauvegarder, copier et modifier les fichiers. C'est l'une des parties les plus agaçantes parce que nous ne pouvons pas toujours obtenir des changements réels. Cela est particulièrement vrai pour les nouvelles fonctionnalités complexes qui sont réparties entre plusieurs demandes de modification et validations. En outre, écrire ces commandes pour change-set est fastidieux et sujet aux erreurs.
- Pour les correctifs webapp, nous modifions également les spécifications pour les autres environnements. Habituellement, ils sont identiques à l'exception du nom du paquetage rpm.
- Nous avons mis tous les fichiers liés rpm à VCS
- Nous modifions build.xml en ajoutant quelques cibles pour construire un nouveau patch. La modification est effectuée par copyptage et édition.
- Nous modifions la configuration de CruiseControl par copypasting projet et la modification des objectifs de fourmis dans ce
- Enfin, nous construisons un système
Aussi, je suis intéressé par toutes les références sur les pratiques de préparation et de déploiement patch, de préférence pour Applications Java. Je n'ai pas réussi à googler ça.
Toute définition du gaspillage qui compte cpu secondes, mais pas employé-jours a besoin d'un peu d'une refonte. – soru
Merci pour la réponse. Malheureusement, nous nous sommes liés à des correctifs pour le moment. Les correctifs sont généralement des caractéristiques, dont certaines sont spécifiques au client, d'autres sont indépendantes des autres, etc. Le projet est une ligne de produits potentiels. Pendant ce temps, nous n'avons aucun support architectural ou SCM pour cela. Pour être honnête, je ne sais pas de quel côté je devrais mordre cet éléphant. – Rorick
Il y avait un produit pour le logiciel Windows sur le marché appelé RTPatch. Ce produit compare deux versions, les appelle v2.3 et v2.4 et génère un programme Windows avec des données qui pourraient changer la version 2.3, telle qu'installée sur une machine utilisateur dans la version 2.4. Peut-être quelque chose comme ça. Mais SÉRIEUSEMENT - il n'y a pas de meilleur moment pour prendre de l'avance sur les problèmes de SCM que maintenant, surtout si vous espérez transformer votre logiciel en une vache à lait. –