Comment automatiser la configuration de l’environnement de développement?

Chaque fois qu’un nouveau développeur rejoint l’équipe ou qu’un développeur utilise des modifications, le développeur doit effectuer beaucoup de travail pour configurer l’environnement de développement local afin que le projet en cours fonctionne. En tant qu’équipe SCRUM, nous essayons d’automatiser tout, y compris le déploiement et les tests. Je demande donc: existe-t-il un outil ou une pratique pour automatiser la configuration de l’environnement de développement local?

Par exemple, pour configurer mon environnement, je devais d’abord installer eclipse, puis SVN, Apache, Tomcat, MySQL, PHP. Après cela, j’ai rempli la firebase database et j’ai dû faire des changements mineurs dans les divers fichiers de configuration, etc. Y a-t-il un moyen de réduire ce travail en un clic?

Il y a plusieurs options, et parfois une combinaison de celles-ci est utile:

  • installation automatisée
  • image disque
  • la virtualisation
  • contrôle du code source

Détails sur les différentes options:

  1. Outils d’installation automatisés pour automatiser l’installation et la configuration des différents services, outils et fichiers de configuration d’un poste de travail:

    • La marionnette a une courbe d’apprentissage mais est puissante. Vous définissez des classes de machines (boîte de développement, serveur Web, etc.) et vous faites ce qui est nécessaire pour installer, configurer et conserver la boîte dans son état. Vous avez demandé un clic, mais Puppet par défaut est un clic de la souris, car il vérifie régulièrement votre ordinateur pour vous assurer qu’il est toujours configuré comme vous le souhaitez. Il détectera le changement de fichier ou de mode et corrigera le problème. Je l’utilise actuellement pour gérer une poignée de boîtiers Linux RedHat, bien qu’il soit capable de gérer des milliers de fichiers. (Ne prend pas en charge Windows à partir du 2009-05-08).
    • Cfengine en est un autre. Je l’ai vu utilisé avec succès dans un magasin avec 70 ingénieurs utilisant RedHat Linux. Ses limites faisaient partie de la raison de la marionnette.
    • SmartFrog est un autre outil de configuration des hôtes. Il supporte Windows.
    • Scripts shell. RightScale propose des exemples de configuration d’une image Amazon EC2 à l’aide de scripts shell.
    • Installer des paquets Sur un box Unix, il est possible de le faire entièrement avec les packages, et Windows peut être une option sur Windows. Par exemple, RubyWorks vous fournit une stack Ruby on Rails complète, en installant un paquet qui à son tour installe les autres paquets via des dépendances.
  2. Images de disque Il existe bien entendu également des outils d’imagerie sur disque pour stocker une image d’un hôte configuré de manière à pouvoir la restaurer sur un autre hôte. Comme dans le cas de la virtualisation, cela est particulièrement intéressant pour les boîtes de test, car il est facile de restaurer les choses dans une ardoise propre. Garder les choses constamment à jour est toujours un problème – est-ce que cela vaut la peine de faire de nouvelles images juste pour propager un changement de fichier de configuration?

  3. La virtualisation est une autre option, par exemple faire des copies d’une image Xen, VirtualPC ou VMWare pour créer de nouveaux hôtes. Cela est particulièrement utile avec les boîtes de test, car quel que soit le gâchis créé par un test, vous pouvez facilement le restaurer dans un état propre et connu. Comme avec les outils d’imagerie de disque, la mise à jour manuelle des hôtes nécessite davantage d’étapes manuelles et de vigilance que si un outil d’installation / de configuration automatisé est utilisé.

  4. Contrôle du code source Une fois que vous avez installé / configuré les outils nécessaires, vous devez vérifier les éléments nécessaires à partir d’un référentiel de code source et le générer.

Actuellement, j’utilise une combinaison de ce qui précède pour automatiser le processus comme suit:

  • Commencez par installer un OS barebone sur un invité VMWare
  • Exécuter un script shell pour installer Puppet et récupérer ses configs à partir du contrôle de code source
  • Marionnette pour installer des outils / composants / configs
  • Découvrez les fichiers du contrôle de code source pour créer et déployer notre application Web

J’ai trébuché sur cette question et j’ai été très surpris que personne n’ait encore mentionné Vagrant .

Vagabond

Comme Pete TerMaat et d’autres l’ont mentionné, la virtualisation est un excellent moyen de gérer et d’automatiser les environnements de développement. Vagrant élimine la douleur de la mise en place de ces boîtes virtuelles.

En quelques minutes, vous pouvez avoir une copie entièrement nouvelle de votre dissortingbution Linux préférée et la configurer exactement de la même manière que votre serveur de production.

Plus besoin de se battre avec OSX ou Windows pour installer PHP, MySQL, etc. Tous les logiciels sont actifs et exécutés dans la machine virtuelle. Vous pouvez même SSH avec vagrant ssh . Si vous faites une erreur ou cassez quelque chose, il suffit que vagrant destroy et que le vagrant up recommence.

Vagrant crée automatiquement un dossier synchronisé sur votre système de fichiers local, ce qui signifie que vous n’avez pas besoin de développer dans la machine virtuelle (par exemple, en utilisant Vim). Utilisez n’importe quel éditeur de votre choix.

Je crée maintenant une nouvelle boîte “Vagrant” pour presque tous les projets que je réalise. Tous mes parameters sont enregistrés dans le référentiel du projet, il est donc facile de faire appel à un autre membre de l’équipe. Ils doivent simplement tirer la pension, et courir vagrant up , et ils sont littéralement prêts à partir.

Cela facilite également la gestion des projets ayant des exigences logicielles différentes. Vous avez peut-être des projets qui reposent sur PHP 5.3, mais d’autres plus récents exécutent PHP 5.4. Installez simplement la version que vous souhaitez pour ce projet.

Vérifiez-le!

Un point important consiste à configurer vos projets dans le contrôle de source de manière à pouvoir créer, déployer et exécuter immédiatement une vérification.

Cela signifie que vous devez également vérifier l’infrastructure auxiliaire, tels que les fichiers Makefiles, les fichiers de compilation ant, etc., ainsi que les parameters des outils, tels que les fichiers de projet IDE.

Cela devrait prendre en charge les problèmes d’installation pour les projets individuels.

Pour la configuration de base de la machine, vous pouvez utiliser une image standard. Une autre option consiste à utiliser les outils de votre plate-forme pour automatiser l’installation. Sous Linux, vous pouvez créer un méta-package qui dépend de tous les packages dont vous avez besoin. Sous Windows, une chose similaire devrait être possible en utilisant MSI ou similaire.

Modifier:

Idéalement, au lieu d’enregistrer l’infrastructure auxiliaire, vous archivez les informations permettant à la génération de générer l’infrastructure d’assistance. C’est l’approche adoptée par exemple par le système de compilation GNU (autotools, etc.), ou par Maven. Ceci est encore plus élégant, car vous pouvez (théoriquement) générer une infrastructure pour tout environnement de construction (pris en charge), vous n’êtes donc pas lié à un IDE spécifique, et les parameters de l’infrastructure auxiliaire (chemins, etc.) les principaux parameters du projet.

Cependant, cette approche est également plus complexe, donc si vous ne pouvez pas le faire fonctionner, je pense que la vérification directe de fichiers tels que les fichiers IDE est acceptable.

J’aime utiliser Virtual PC ou VMware pour virtualiser l’environnement de développement. Ceci fournit un environnement de développement standard qui pourrait être partagé entre les développeurs. Vous n’avez pas à vous soucier des logiciels que l’utilisateur pourrait append à son système et susceptibles d’entrer en conflit avec votre environnement de développement. Cela me permet également de travailler sur deux projets où les environnements de développement ne peuvent pas être tous deux sur un seul système (en utilisant deux versions différentes d’une technologie de base).

Utilisez la marionnette pour configurer votre environnement de développement et de production. L’utilisation d’un système d’automatisation de premier ordre est le seul moyen de faire évoluer vos opérations.

Il est toujours possible d’utiliser des machines virtuelles (voir par exemple VMWare Player ). Créez un environnement et copiez-le pour chaque nouvel employé avec une configuration minimale requirejse.

A un endroit antérieur, nous avions tout (et je veux dire tout) dans SCM (clearcase puis SVN). Lorsqu’un nouveau développeur peut, il a installé ClearCase | SVN et aspiré le référentiel. Cela gère également le cas où vous devez mettre à jour un outil / lib particulier, car les équipes de développement peuvent simplement mettre à jour leur environnement.

Nous avons utilisé deux repo pour cela, donc le code et les outils / config ont vécu dans des endroits distincts.

Je recommande fortement Blueprint de DevStructure. C’est open-source et votre cas d’utilisation est la raison exacte pour laquelle nous avons écrit le logiciel. Nos objectives ont quelque peu changé, mais c’est toujours l’outil parfait pour ce que vous décrivez. En bref, vous pouvez créer des configurations de serveur réutilisables – une gestion de configuration simple et rapide. J’espère que ça aide!

https://github.com/devstructure/blueprint (Blueprint @ Github)

J’ai pensé à ça moi-même. Il y a d’autres technologies que vous pouvez intégrer au mélange. Voici ce que je suis en train de mettre en place:

  • Images d’installation pré-ensemencées basées sur PXE (Debian Squeeze). Vous pouvez démarrer une machine nue (ou une nouvelle appliance virtuelle) et sélectionner l’image dans le menu de démarrage PXE. Cela présente l’avantage majeur de pouvoir installer votre environnement sur des machines physiques (en plus des appareils virtuels).
  • Quelqu’un a déjà mentionné Puppet. J’utilise CFEngine mais c’est un accord similaire. Essentiellement, votre configuration est documentée et centralisée dans des fichiers de règles appliqués en permanence par un agent sur le client.
  • Si vous ne voulez pas d’un environnement rigide (les développeurs peuvent choisir une combinaison de jeux d’outils), vous pouvez lancer vos propres paquets deb afin que les nouveaux développeurs puissent saisir sudo apt-get install acmecorp-eclipse-env ou sudo apt-get install acmecorp-intellij-env , par exemple.
  • Légèrement hors-sujet, mais si vous utilisez un environnement basé sur Debian (Ubuntu), envisagez d’installer apt-cacher (proxy de package). En plus d’économiser de la bande passante, vos installations seront beaucoup plus rapides (puisque les packages sont mis en cache sur votre réseau local).

Si vous utilisez OSX et travaillez avec Rails. Je suggère soit:

Si vous utilisez des machines dans une configuration standard, vous pouvez créer une image du disque avec une nouvelle installation parfaitement configurée – c’est une approche très populaire dans de nombreuses entresockets (et pas seulement pour les développeurs). Si vous avez besoin d’OS configurés séparément, vous pouvez tar-bz2 tous les fichiers ajoutés et modifiés une fois qu’un système d’exploitation configuré est configuré dans votre configuration souhaitée, et simplement le décompresser en tant que root pour créer votre environnement souhaité à partir de zéro.

Si vous utilisez une version Linux, vous avez probablement un système de gestion des paquets: pense à .rpm pour fedora / redhat ou .deb pour ubuntu / debian. beaucoup de choses que vous décrivez ont déjà des paquets disponibles: svn, eclipse, etc. vous pouvez déployer vos propres paquets pour des logiciels spécifiques à la société, créer un référentiel (peut-être disponible uniquement sur le réseau local) et votre configuration pourrait être réduite à un seul script bash qui appendait le repo de la société à /etc/apt/sources.list (debian / ubuntu) et ensuite appeler une commande comme,

 /home/newhire$ apt-get update && apt-get install some complete package list 

Vous pouvez utiliser buildbot pour automatiser ensuite les versions régulières des packages d’entreprise qui changent souvent.

Essayez DevScript sur http://nsnihalsahu.github.io/devscript . Sa seule commande comme la devscript lamp devscript laravel ou devscript laravel ou devscript django . En quelques minutes, en fonction de la vitesse de votre connexion internet

Vous pouvez télécharger la dernière version de Java JDK à partir du site Java d’Oracle – Java SE Downloads. Vous trouverez des instructions pour installer JDK dans les fichiers téléchargés, suivez les instructions données pour installer et configurer la configuration. Enfin, définissez les variables d’environnement PATH et JAVA_HOME pour faire référence au répertoire contenant java et javac, généralement java_install_dir/bin et java_install_dir respectivement.

Si vous exécutez Windows et que vous avez installé le JDK dans C:\jdk1.8.0_102 , vous devez placer la ligne suivante dans votre fichier C:\autoexec.bat .

 set PATH=C:\jdk1.8.0_102\bin;%PATH% set JAVA_HOME=C:\jdk1.8.0_102 

Vous pouvez également cliquer avec le bouton droit sur Poste de travail, sélectionner Propriétés, puis Avancé, puis Variables d’environnement. Ensuite, vous mettrez à jour la valeur PATH et appuyez sur le bouton OK.

Sous Linux, si le SDK est installé dans /usr/local/jdk1.8.0_102 et que vous utilisez le shell C, vous devez placer le code suivant dans votre fichier .cshrc.

 setenv PATH /usr/local/jdk1.8.0_102/bin:$PATH setenv JAVA_HOME /usr/local/jdk1.8.0_102 

Alternativement, si vous utilisez un studio Android, alors il saura automatiquement où vous avez installé votre Java. IDE Android

Il existe tellement de technologies sophistiquées disponibles pour développer des applications Android, les technologies familières, qui utilisent principalement les outils suivants:

 Android Studio Eclipse IDE(Deprecated) 

Elysium Academy Formation sur Android, MICROSOFT, REDHAT, CEH et VMware avec des professionnels certifiés ayant une très bonne expérience et de bonnes compétences