Automatice el patrón de construcción y desarrollo con VisualStudio

Actualmente estoy trabajando en un proyecto que ha estado sucediendo durante varios años seguidos. El equipo de desarrollo es pequeño (less de 5 progtwigdores) y el control de fuente es prácticamente inexistente, y el process de implementación tal como está solo se basa en mover manualmente files de un server a otro. El proyecto está en ASP clásico, por lo que build no es un problema, ya que tanto la implementación como las testings consisten simplemente en llevar los files a donde deben estar y dirigir el browser a la location correcta. Actualmente todo el desarrollo se realiza en una unidad de networking que también es el server de testing. El server de testing solo está disponible cuando se encuentra dentro de la networking local (se puede acceder a través de vpn), y está disponible en la dirección 'site.test' en el browser (requiere editar el file de hosts en todos los clientes, pero desde hay tan pocos de nosotros que no ha probado ser un problema en absoluto). Todo el desarrollo se realiza en Visual Studio. Cada vez que se cambia un file, se requiere que el desarrollador que cambió el file escriba el file que cambió en un documento de Word e incluya una pequeña descripción de lo que se cambió y por qué. Entonces, cada vez que se supone que hay una versión-bump (implementación), nuestro desarrollador principal va a través del documento de Word y copy cada file (file por file) que ha cambiado al server de producción. Ahora, no creo que deba decirle que este método es muy propenso a errores (un desarrollador podría, por ejemplo, olvidar agregar que cambió alguna dependencia, y que podría causar problemas cuando se implementa), y que hay mucho trabajo involucrado con deployment

Y aquí viene la pregunta principal. El desarrollador principal me ha pedido que use algo de time para ver si puedo encontrar una solución simple que pueda simplificar y automatizar el "control de versiones" y la implementación. Ahora, lo importante es que es lo más fácil de usar para los desarrolladores. Dos de los desarrolladores existentes han trabajado con computadoras durante mucho time, y están bastante atrapados en sus rutinas, por lo que, por ejemplo, cambiarlo a algo así como git bash no funcionaría en absoluto. No me malinterpreten, me encanta, pero la primera vez que uno de ellos tuvo un conflicto de fusión, no sabrían qué hacer en absoluto. Además, sería ideal cambiar a un process de desarrollo más distribuido donde los desarrolladores no necesitarían iniciar session en vpn (o necesitarían Internet en absoluto) para desarrollarse, y los cambios que realizaron fuera de línea podrían sincronizarse cuando estuvieran disponibles. hecho con ellos. Ahora, he visto Teem Development Server de Microsoft debido a su fuerte integración con Visual Studio. Por lo que he probado, parece posible hacer que Visual Studio le pregunte al usuario si quiere verificar los cambios cada vez que el usuario cierra Visual Studio. Ahora, usar TFS para control de origen probablemente eliminaría la mayoría de los problemas con el desarrollo, pero ¿qué hay de la implementación? Sin mencionar el versionado? Por lo que he entendido (solo he examinado brevemente TFS), TFS tiene un número en ejecución para cada check-in, pero ¿es posible decirle a TFS que este check-in debería ser la versión 2.0.1 del sistema? (por ejemplo), y luego ¿implementarlo en el server web? Y otro problema, la solución completa consiste en alnetworkingedor de 10 directorys con cientos de files, aunque el sistema en sí (sin imágenes y tal) es solo de 5 directorys, y solo estos 5 deberían implementarse en el server, ¿es posible automatizarlo?

Sé que hay muchas preguntas aquí, pero lo más importante es que quiero automatizar el process de desarrollo (no la encoding, sino la administración del código) y el process de implementación, y quiero hacerlo tan simple como posible de usar No me importa si la configuration es un poco de trabajo, porque tengo suficiente time para configurar el sistema que se ajuste a nuestras necesidades, pero los otros desarrolladores no deberían tener que configurar mucho . Si todas las máquinas que deberían usar el sistema deben configurarse una vez, eso no representa ningún problema, porque puedo hacerlo, pero no debería haber ninguna necesidad de configurar y configurar a medida que avanzamos.

Ahora, ¿alguno de ustedes tiene alguna sugerencia sobre qué sistemas usar / cómo usarlos, para simplificar los processs descritos anteriormente? He trabajado anteriormente con varios types de sistemas scm (GIT, HG y SubVersion), pero no tengo ninguna experiencia con los sistemas de compilation (si es necesario). Los artículos y la discusión sobre cómo configurar de manera eficiente sistemas como este serían muy apreciados. De antemano, gracias.

Este es un territorio bastante subjetivo, pero creo que primero debes get algunas ganancias fáciles. Los desarrolladores que están "atrapados allí" son el principal obstáculo aquí. Van a ver el cambio como disruptivo y no vale la pena. Tienes que ir lenta y cuidadosamente por las victorias fáciles.

Primero, TFS probablemente no sea una buena opción. Es costoso, pesado, y el control de fuente en TFS es bastante malo. Vaya a Subversion: es fácil de configurar y fácil de usar, y es gratis. Ponlo en primer lugar y haz que los desarrolladores lo usen. Es mucho más fácil decirlo que hacerlo.

Más tarde (posiblemente mucho más tarde), una vez que los desarrolladores lo estén usando y no puedan imaginar la vida sin un VCS, entonces podrían cambiar a Hg o Git si necesitan una bifurcación de primera class y todas esas otras características agradables.

Una vez que tenga Subversion en su lugar, puede usar algo como JetBrains TeamCity o Jenkins, ambos gratuitos y fáciles de usar. Sin embargo, supongo que no tienes muchas testings y comstack scripts para que el server de CI realmente se esté ejecutando, por lo que es mucho más importante que primero tengas VCS. En todas las cosas: mantenlo lo más simple posible. Pequeños pasos. Obtenga algunas victorias, cree confianza, repita.

¡Ni siquiera puedo empezar a pensar por dónde empezar con esto! Sin ninguna ofensa dirigida a usted, aparte de la mención de git y HG, esta publicación podría haber sido escrita hace 10 años.

1) Control de fuente: ¿cómo puede un equipo de desarrolladores trabajar efectivamente sin algún tipo de control de fuente? Demonios, incluso si es Visual Source Safe (* estremecimiento *) al less sería algo. Debe insistir en que el equipo implemente el control de fuente. Ya sabes lo que hay disponible, así que no voy a empezar a pnetworkingicar sobre eso. (Sin embargo, Subversion con TortoiseSVN me ha funcionado bastante bien).

2)

"escriba el file que cambió en un documento de Word e incluya una pequeña descripción de lo que se cambió y por qué"

Tienes que estar bromeando … ¿Qué sucede si dos desarrolladores cambian el mismo file? ¿El cliente entonces tiene que fusionar manualmente dos cambios que él / ella extrae de la palabra doc? Por favor vea # 1 y explíqueles cómo funcionan los comentarios de compromiso.


Como realmente no necesita "comstackr" (comstackr, etc.) nada, debería poder resolver la mayoría de sus problemas con algunas herramientas simples. En primer lugar, debe utilizar una solución de control de fuente. Sí, los desarrolladores tendrían que aprender a usar otra herramienta (¡EEEK!). Podría hacer el trabajo inicial de get el código en el repository. Si tiene acceso a files en las máquinas de otros desarrolladores, incluso podría copyr una copy de trabajo desprotegida en sus máquinas para que ellos mismos no tengan que hacer el pago (no es tan difícil). A continuación, puede usar toda la bondad cremosa del control de versiones para crear twigs de versión cuando se necesite realizar cada implementación. Puede escribir scripts simples usando las herramientas SVN de línea de command para verificar dichas twigs y copyr automáticamente los files al server (s) de destino. Al usar una herramienta como BeyondCompare, el process de copy podría restringirse solo a los files que son diferentes (además, BC puede manejar un destino FTP si ese es un problema). Al imponer comentarios de compromiso en el repository de SVN, garantizará que los desarrolladores proporcionen comentarios, y para cada set de cambios entre lanzamientos, podría generar fácilmente una list de todos esos comentarios utilizando las funciones de recuperación de loggings de CSM.