version-control - source - joel test
Herramientas para ayudar a una pequeña tienda a obtener una puntuación más alta en "Joel Test" (14)
En mi opinión, las preguntas n. ° 1 a la n. ° 4 sobre Joel Test se refieren a las herramientas de desarrollo que se utilizan y al sistema de apoyo establecido para los desarrolladores:
- ¿Usas control de fuente?
- ¿Se puede hacer una acumulación en un solo paso?
- Haces contrucciones todos los dias.
- ¿Tienes una base de datos de errores?
Solo tengo curiosidad por saber qué herramientas gratuitas / baratas (pero buenas) existen para las pequeñas tiendas de desarrollo que no tienen grandes cuentas bancarias que utilizar para lograr una respuesta positiva en estas cuestiones.
Para el control de la fuente, sé que Subversion es una gran solución, y si usted es una tienda de un solo hombre, incluso podría usar la Bóveda de SourceGear .
Uso NAnt para mis proyectos más grandes, pero aún tengo que configurar un script para compilar mis instaladores y ejecutar las herramientas de ofuscación como un solo paso. ¿Cualquier otra sugerencia?
Si puede responder sí al edificio en un solo paso, creo que crear compilaciones diarias sería fácil, pero ¿qué herramientas recomendaría para automatizar esas compilaciones diarias?
Para un equipo de uno o dos hombres, ya se ha discutido en SO que puede usar FogBugz On Demand, pero ¿qué otras soluciones de seguimiento de errores existen para los equipos pequeños?
Mi stack de ingeniería:
- Git (me encanta GitHub, pero Git no requiere una solución alojada)
- Rastrillo
- CruiseControl.rb
- FogBugz
Sin duda, estas opciones están influenciadas por mi paquete de desarrollo, que a menudo incluye Ruby, Rails, SQLite, Firefox y OSX.
No tengo ninguna herramienta para sugerir, pero sí una sugerencia sobre las compilaciones diarias. Siempre respondo que sí a esa pregunta, a pesar de que no tenemos compilaciones diarias. En cambio, hacemos una compilación cada vez que alguien hace un commit. Por lo tanto, detectamos cualquier problema casi de inmediato. Si alguno de nuestros proyectos tiene suficiente LOC, esa construcción lleva más que un tiempo trivial, y esto también se degradará graciosamente en la dirección de una construcción diaria.
Un buen rastreador de problemas relativamente económico fue axoSoft OnTime . Lo utilicé durante años antes de obtener MS TFS.
Nant y CruiseControl son elementos básicos de mi entorno.
Actualmente estoy usando SVN, pero generalmente he tenido muchos problemas con las transferencias a una unidad de red en un servidor de desarrollo. Suele haber problemas de bloqueo que requieren mucha pesca para solucionarlos. Puede ser que usar el método de acceso WebDav alivie algunos de estos problemas, pero aún no lo he experimentado.
Cualquiera de Bugzilla, Trac o Fogbugz lo ayudará con el seguimiento de errores, y cada uno ofrece una función de exportación, para que siempre pueda cambiar de opinión más adelante. Además, si puede lograr que su equipo compre por completo, el software de administración del tiempo también puede ser útil para autopsias, etc. (si todos están motivados para participar plenamente).
Vea estos artículos sobre integración continua usando MSBuild, CruiseControl.NET, FxCop, NUnit, NCover y Subversion ...
Mi pila preferida:
1) Subversion. Estoy intrigado por el control distribuido de la fuente, pero aún no he tenido la oportunidad de probarlo con ira. Para una solución centralizada svn es sólida como una roca.
2) Ant. Maven es un placer usarlo cuando está funcionando pero, como un viejo hacker de hormigas, creo que maven es difícil de seguir una vez que las cosas salen mal.
3) Hudson. No se ha mencionado hasta ahora, pero definitivamente vale la pena investigar. Herramienta increíblemente útil y mantenida activamente. PreviousLy pagamos por Anthill Pro, que parecía flaky y era doloroso de arreglar cada vez que se estropeaba.
4) Pagamos por jira. No es barato, pero es mucho más útil que las opciones de código abierto que vimos y muy flexible también.
Para la automatización de compilación y la integración continua, eche un vistazo a TeamCity de Jetbrains .
Tiene muchas funciones y es muy fácil de instalar y usar.
Si usa Visual Studio 2005/2008, construirá su solución directamente sin la necesidad de scripts adicionales (si una compilación es lo único que desea).
También ejecutará las pruebas unitarias y recopilará estadísticas sobre el éxito de la construcción, los tiempos de ejecución de la prueba unitaria, etc., etc.
Lo mejor de todo: la edición Pro es gratuita para equipos con hasta 20 usuarios y 3 agentes de desarrollo.
- Git
- Hacer
- Cron
- Trac
Soy un hombre de pocas sílabas ;-)
Asegúrese de utilizar algún tipo de control de versiones donde los desarrolladores puedan crear fácilmente sucursales privadas de cualquier manera, luego tomar su rama privada y exprimirla en una sola confirmación en la sucursal principal. De esta forma, los desarrolladores individuales, a diferencia de la organización, pueden obtener los beneficios del control de versiones sin contaminar el código de nadie (y ralentizar su trabajo) con compromisos fallidos.
Esta característica es lo que me gusta de git. Creo que solo está realmente presente en los sistemas de control de versiones distribuidas; Sin embargo, usar un DVCS no significa que realmente tengas que hacer un desarrollo distribuido.
Con respecto a la creación en un solo paso, make es la herramienta de compilación predeterminada y funciona bastante bien para la mayoría de las tareas. Me iría con eso a menos que tengas una buena razón para no hacerlo.
Desea compilaciones diarias, ponga el comando de compilación en su cron.daily. Configure un gancho de procmail para manejar el correo de cron si es necesario.
Para el seguimiento de errores, use $(apt-cache search bug tracking)
. Básicamente, siempre y cuando indique "rastreador de errores" en la caja y sepa que otras personas lo están utilizando, probablemente funcione bien. Entre los asiduos se encuentran bugzilla, mantis y trac.
- control de fuente: cvs
- construir gnu hacer
- trabajo cron que llama a scripts bash
- bugzilla
- control de fuente: Subversion o Mercurial o Git
- automatización de compilación: NAnt , MSBuild , Rake , Maven
- integración continua: CruiseControl.NET o Continuum o Jenkins
- seguimiento de problemas: Trac , Bugzilla , Gemini (si debe ser .NET y free-ish)
No olvide las pruebas automatizadas con NUnit , Fit y WatiN .
Es posible que desee ver una pregunta mía existente para encontrar una alternativa al sistema de equipo . Hay muchas recomendaciones allí también.
No creo que realmente necesite ofuscación en .Net nunca más ( vea otra respuesta )
No consideraría Vault, SVN es realmente el líder del mercado en este momento (y gratis). Git parece bastante prometedor, pero actualmente solo tiene línea de comando con una curva de aprendizaje pronunciada.
MSBuild supera a NAnt para .Net 2 o 3.5
CC.Net es excelente.