Pouvez-vous créer un build en une seule étape?

14

Du test joel :

Pouvez-vous créer un build en une seule étape?

Je dois dire que je ne peux pas. Je travaille actuellement sur une application web qui a une liste de feuille de calcul des éléments qui doivent être effectués pour se déployer. Ma question est donc de savoir comment puis-je automatiser cela ? Doit-elle être étendue à toute l'organisation? Conseils / techniques?

billy.bob
la source
3
Cela dépend des éléments de la liste? Idéalement, oui, vous devriez pouvoir l'automatiser.
Personne
4
en.wikipedia.org/wiki/Build_automation BTW: Certains restent un pas est un trop :)
Mchl
Toutes sortes - déplacez des fichiers, scriptez des procédures stockées, etc. - il y a 14 étapes!
billy.bob
2
Sous un angle différent, que pensez-vous que vous ne pouvez pas automatiser sur la liste?
Tyanna
1
La question de l'automatisation d'une génération n'est pas subjective et doit être posée sur Stack Overflow. La question devrait également contenir plus d'informations sur les tâches nécessaires pour obtenir une réponse utile.
David Thornley

Réponses:

10

Make peut automatiser le processus de construction en une seule étape. Make peut faire à peu près tout ce que vous voulez. Je ne sais pas pourquoi sapporo pense que Make ne s'applique qu'à C / C ++. Vous pouvez utiliser make pour exécuter n'importe quel type de commande. Il n'est même pas lié à la programmation, mais c'est à cela qu'il sert généralement.

Pemdas
la source
2
make est un de ces outils de type "couteau suisse"; adore travailler avec. Quelque chose d'autre pour indiquer où make serait utile est que si vous automatisez votre build / processus / etc, et qu'une ou plusieurs étapes dépendent de la réussite d'une autre, make s'arrêtera si cette étape échoue, ne permettant pas à ces autres étapes de continuer et peut causer des problèmes.
Will
1
Étant donné que de nombreux 'applications / systèmes nix sont installés avec' ./configure; faire; make install 'Je pense que make fait également office de moteur d'installation. S'il peut le faire, je suis également sûr qu'il peut résoudre le dilemme du PO.
JBRWilkinson
Make, mais la syntaxe est assez obscure. À ce jour, j'ai rencontré 2 alternatives: SCons (beaucoup plus facile que Make + makedepend) et un outil pour automatiser la création du Makefile (propriétaire).
Matthieu M.
@JbRWilkinson ... comme je l'ai dit, make peut faire à peu près tout ce que vous voulez;)
Pemdas
3

Selon votre environnement, vous voudrez peut-être regarder Make (C / C ++), Ant / Maven (Java), Gradle (Groovy) - ce sont ceux que je connais. Les chances sont élevées, il existe une solution populaire pour votre environnement.

sapporo
la source
C'est un environnement ASP.NET / SQL
billy.bob
@ m.edmondson - alors cruisecontrol.sourceforge.net est probablement votre voie à suivre
bobah
TeamCity est un autre bon environnement d'intégration continue pour ASP.NET. J'ai utilisé CruiseControl et TeamCity et j'ai trouvé TeamCity un peu plus facile à utiliser et un peu plus puissant. Mais cela pourrait ne plus être le cas.
RationalGeek
NANT est la variante .NET ANT que nous avons bien utilisée en complément de Cruise Control que je n'utiliserais pas pour créer du code pour le déploiement où vous avez tendance à vouloir quelques éléments supplémentaires inclus / modifiés / définis et modifiés, etc. . C'est ce que font ANT / NANT.
Jon Hopkins
J'appuie la suggestion de @Jon Hopkinds - nant correspond parfaitement à votre environnement.
JBRWilkinson
0

Bien sûr, il existe un moyen d'automatiser cela. Avec des outils comme Chef , la configuration d'un tout nouveau serveur fraîchement installé peut être aussi simple que:

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

Dans mon cas, certaines étapes exécutées par cette seule commande sont:

  • Installer les bibliothèques, programmes et modules Python requis
  • Créer de nouveaux utilisateurs avec des privilèges d'accès spécifiés
  • Créer de nouvelles bases de données, charger le schéma requis, définir la propriété et les droits d'accès
  • Téléchargez et organisez le code du projet, puis écrivez les informations de configuration
  • Mettez tout en mode production en lançant des serveurs de base de données, en configurant des tâches cron, etc.

Je ne suis pas sûr de la performance de Chef dans votre environnement, car le support de Windows est répertorié comme "préliminaire", mais pour les systèmes basés sur UNIX, ce sont les genoux de l'abeille.

Puppet est un système similaire qui est un peu plus ancien que chef et peut offrir une meilleure prise en charge de Windows.

Sharpie
la source
0

C'est simple avec Maven dans le monde Java

mvn clean deploy

Dans notre configuration, cela fait toute la construction nécessaire du fichier WAR (en tirant les dépendances JAR au besoin), le déploiement sur le serveur Web de développement et la création de données de test prédéfinies sur la base de données de développement. Une fois que c'est en place, Maven gère les tests fonctionnels complets via SeleniumRC pour vérifier le fonctionnement de l'application.

Cette commande unique permet de déployer complètement l'application sur le cluster de serveurs de développement afin qu'elle soit immédiatement disponible pour que les autres développeurs puissent travailler immédiatement (en supposant qu'elle ait réussi les tests). Il est inhabituel qu'un déploiement dev échoue, car les développeurs ont vérifié qu'il fonctionne localement avec mvn clean install.

L'artefact d'instantané (WAR) est ensuite copié dans le référentiel Maven pour être partagé avec d'autres développeurs (conformément au deploycomportement Maven standard ).

OK, mais vous n'avez déployé qu'un instantané pour le développement, qu'en est-il du test et de la production?

La distribution aux serveurs de test et de production (plus tard) est gérée par le processus de publication de Maven que nous aimons gérer manuellement pour garantir que quelqu'un surveille toute sortie suspecte. Les testeurs ne fonctionnent qu'avec les artefacts publiés, pas les instantanés.

Une fois qu'il est sorti, un simple script de construction est utilisé pour SFTP le fichier WAR vers le cluster de serveur de test, encore une fois avec quelqu'un qui regarde le processus pour s'assurer que rien ne va mal.

Enfin, une fois que tous les testeurs sont satisfaits, le fichier WAR inchangé est SFTP jusqu'au cluster de serveurs de production de basculement, avec quelqu'un qui surveille de près et une position de restauration immédiate en place en cas de catastrophe.

Gary Rowe
la source
0

Je me suis dit que je pourrais vérifier celui-là lors de notre test Joel alors ...

J'ai fait un serveur de build en python automatisé en utilisant pychron .

Le code a été synchronisé avec VSS à partir de la ligne de commande, construit avec borland make (la plupart des IDE créeront des fichiers make pour vous, qu'ils les appellent ou non. Delphi utilisait des fichiers make et les appelait des fichiers .BPG, maintenant ils ' concernant les fichiers XML MSBuild et vous pouvez utiliser MSBuild) et les erreurs ont été enregistrées dans un fichier XML que je viens d'ajouter.

Alors .. Il suffit d'écrire un fichier batch et de faire ces choses.

  1. Synchroniser le code depuis le contrôle de code source
  2. Supprimez les trucs stupides (fichiers de configuration individuels pour les projets) dont vous savez qu'ils vous empêcheront de tout construire.
  3. Tout construire (je construirais tout, ferais tout frère).
  4. Enregistrez vos erreurs et avertissements et autres, mais n'arrêtez pas de construire. (Si vous êtes vraiment intelligent, vous allez extraire le nom de la dernière personne à avoir archivé le fichier qui a causé la rupture de la génération et lui envoyer un nastygram)
Peter Turner
la source