Ok, entonces esto puede sonar un poco raro, pero aquí va.
Estoy enseñando un laboratorio de algorithms y estructuras de datos en mi universidad local y quiero ofrecer a mis alumnos una experiencia fluida y divertida. Hasta ahora, utilizaba un repository de git simple que cada estudiante bifurcaba, y cada vez que completaban una tarea, realizaban una request de inserción y extracción, revisaba su código y, si todo estaba bien, fusionaba la request de extracción en el principal. repo. Esto funciona bastante bien, pero quiero hacer algo más interesante.
El laboratorio se enseña en C (ni siquiera en C ++) (y no, no quiero entrar en polémicas sobre por qué otro idioma sería mejor). Lo que quiero hacer es tener algo así como una compilation de Jenkins en cada impulso que hace un alumno que verifica algunas testings pnetworkingefinidas para la tarea en cuestión.
Por ejemplo, para la semana 2, les daría una tarea con lists. Me gustaría escribir las testings para esta tarea yo mismo y luego verificar automáticamente qué hicieron con esas testings.
Lo que tengo disponible:
++ un muy buen 'add-on' a todo esto sería usar algo como sonar como verificador de código Y verificar si hay código duplicado dentro de sus twigs (para ver si alguien copió una respuesta de otra persona)
¿Estoy en el path correcto al search un server de Jenkins, pensando en sonar, etc.? Estoy lejos? No creo que esto sea imposible. Puede ser difícil, sí, pero eso lo hace divertido ^^
El 'flujo' que quiero es:
En nombre de mis queridos estudiantes, gracias.
TL; DR: sí, lo que quiere hacer es factible, y ya está buscando las herramientas correctas.
Lo que quiere parece totalmente factible: instalar el plugin de Git para Jenkins, configurarlo para rastrear cada una de las twigs del repository, y ya es posible lanzar una compilation después de cada inserción.
Dado que puede ejecutar scripts arbitrarios durante una compilation de Jenkins, puede otorgar permissions de inserción al usuario de Jenkins y fusionarlo e insert el código si se superan todas las testings.
También puede instalar un server de sonar y llamarlo a través del complemento Sonar , y sus alumnos obtendrán estos comentarios adicionales.
Por otro lado, Gerrit podría ser un poco exagerado para lo que estás buscando. O más bien: es una herramienta valiosa, pero creo que no la necesita para la primera iteración.
Puedo pensar en dos types de dificultades:
Para (1), quiero decir que tendrá que implementar sus reglas (por ejemplo, "solo comstackr la subcarpeta que pertenece al último commiter"; "no comstackr commits de fusión en el maestro"; …). Y es probable que te encuentres con problemas tales que:
Supongo que solo tendrás que arreglar esos fallos técnicos cuando los descubras. Solo piense en crear copys de security de su configuration de Jenkins (también podría savelas en un repository de git ad hoc).
Para (2), quiero decir que es posible que desee tener en count, por ejemplo, el caso en que un alumno eliminaría del repository las testings que su implementación no puede aprobar. O el caso del estudiante que presionaría directamente al maestro.
Creo que podría agregar muchos controles para evitar este tipo de trampa, sin embargo, en lugar de entrar en un "conflicto tecnológico", creo que sería más saludable simplemente decirles que confía en ellos.