Los desarrolladores crean scripts para ayudar en su trabajo. Por ejemplo, para ejecutar Maven con ciertos parámetros, para eliminar tareas en segundo plano innecesarias que surgen en el desarrollo o para conectarse a un determinado servidor. Los scripts no son scripts de compilación centrales ni se utilizan en nuestro servidor de Integración continua.
¿Cuál es la mejor manera de gestionarlos? Para ponerlos en un directorio (tal vez /scripts
) y registrarlos en Git? ¿Para mantenerlos por separado en algún servidor de archivos?
El argumento para tratarlos como código fuente es que son fuente y pueden cambiar. El argumento para no hacerlo es que son solo herramientas auxiliares y que no todos los desarrolladores necesitan un script determinado (por ejemplo, scripts específicos de Linux donde algunos desarrolladores trabajan en Windows).
fuente
Respuestas:
Los scripts de desarrollador también entran en el control de versiones, porque generalmente estos scripts también dependen de los elementos en el control de versiones, por ejemplo, rutas de archivos.
Si estos scripts están versionados, también deberían funcionar para todos los desarrolladores para evitar que cada desarrollador escriba su propio conjunto de scripts, lo que se convierte en un infierno de mantenimiento.
Además, las correcciones de errores o las mejoras de estos scripts se implementan automáticamente para cada desarrollador a través del control de versiones.
fuente
Además de la respuesta de @ Simon.
No todo en la ingeniería de software se trata de programación, diseño o modelado. Hay una gran cantidad de tareas que realizamos continuamente durante la jornada laboral. Ya mencionaste uno: construir el proyecto fuera del IDE , pero hay muchos más.
Los desarrolladores experimentados / proactivos tienden a automatizar estas tareas. Algunos, incluso crean herramientas cuando estas tareas se vuelven parte del SDLC y son tediosas, y propensas a errores , que se pueden hacer a mano. Los programas son buenos para hacer trabajos repetitivos, no importa cuán tediosos sean. Nosotros - humanos , no somos tan buenos.
Estas herramientas / scripts tienen otros efectos secundarios positivos
Entonces, sí, los scripts deberían estar en SCM y deberían ser una herramienta más en la caja de herramientas del desarrollador.
En cuanto a la carpeta
/scripts
, diría que no importa. Por simplicidad, los dejo en el directorio raíz del proyecto para que todas las rutas declaradas en los scripts sean relativas a la carpeta del proyecto. Si necesito acceso a carpetas o archivos externos, creo enlaces suaves .Cosas a tener en cuenta antes de registrar los scripts en el SCM.
Por seguridad, asegúrese de que los scripts no tengan credenciales codificadas ( idealmente, los scripts deben estar bien parametrizados )
Asegúrese de que las secuencias de comandos no hagan cosas extrañas al sistema, como por ejemplo, para ejecutar comandos que no se pueden deshacer (lo más típico
rm -rf
).Dado que estos se convierten en parte de la fuente del proyecto, la documentación es muy apreciada.
Las secuencias de comandos no son ciencia espacial. Hacer guiones concisos. En lugar de uno para gobernarlos a todos ... y en la oscuridad átalos , haz más, más pequeño y conciso. Como si estuvieras aplicando SRP.
fuente
Voy a ofrecer una opinión algo más negativa. Por un lado, los scripts de desarrollador que son genéricos, efectivos y útiles, por supuesto, deberían compartirse con otros desarrolladores, y la mejor manera de hacerlo es hacer que se sientan con el código en el mismo repositorio.
Sin embargo , establecería una barra alta de entrada para que se confirmen los scripts. Las secuencias de comandos son código, al igual que el software en sí. Eso significa que deben tratarse de manera similar a otras piezas de código:
Hay una serie de consideraciones adicionales que se aplican más a los scripts que al software en sí:
Para resumir, los scripts pueden ser muy útiles para un desarrollador individual, pero compartirlos como parte de la base de código en sí puede ser una tarea mucho más difícil y potencialmente puede causar más problemas de los que se resuelven.
fuente