Ok, quindi questo potrebbe sembrare un po 'strano ma qui va.Integrazione continua per i compiti degli studenti
Sto insegnando un laboratorio di strutture dati e algoritmi presso la mia università locale e voglio dare ai miei studenti un'esperienza fluida e divertente. Fino ad ora, ho usato un semplice repository git che ogni studente ha biforcato, e ogni volta che hanno completato un incarico, hanno fatto una richiesta push + pull, vorrei rivedere il loro codice e se tutto andava bene, avrei unito la richiesta pull pronti contro termine. Funziona abbastanza bene, ma voglio fare qualcosa di più interessante.
Il laboratorio viene insegnato in C (nemmeno in C++) (e no, non voglio inserire polemiche sul perché un altro linguaggio sarebbe migliore). Quello che voglio fare è avere qualcosa come una build di Jenkins eseguita su ogni spinta effettuata da un alunno che verifica alcuni test predefiniti per l'attività in corso.
Ad esempio, per la settimana 2, assegnerei loro un compito a casa con le liste. Vorrei scrivere personalmente i test per questo compito e quindi verificare automaticamente che cosa hanno fatto usando quei test.
Quello che ho a disposizione:
- 24/7 in esecuzione della macchina CentOS che posso usare per mettere qualche cosa su (ho Jenkins e Tomcat in esecuzione su di esso atm)
- abbastanza tempo e forza di volontà per cercare di fare la loro esperienza in questo laboratorio vale la pena
++ un bel 'componente aggiuntivo' per tutto questo sarebbe utilizzare qualcosa come sonar come verificatore di codice E controllare il codice duplicato all'interno delle loro filiali (come per vedere se qualcuno ha copiato una risposta da qualcun altro)
Sono sulla strada giusta andando per un server Jenkins, pensando al sonar, ecc? Sono lontano? Non penso che sia impossibile. Potrebbe essere difficile, sì, ma che lo rende divertente ^^
Il 'flusso' che voglio è:
- ogni studente è parte di un'organizzazione git + repo
- Creano un ramo dal padrone locale (imporrò una limitazione come 'usa solo una sottocartella con il tuo nome')
- il ramo principale conterrà i test
- lavoreranno ai compiti sul loro ramo e poi lo spingeranno a Jenkins/Gerrit/qualunque sia
- il ramo verrà in qualche modo testato e se tutti i test passano, sarà unito al master.
Per conto dei miei cari studenti, grazie.
Vorrei avere insegnanti del genere ... – Vishwanath
Sei sulla buona strada per Jenkins. A proposito del controllo della duplicazione, non sono sicuro che tu possa farlo con Sonar. – Vishwanath
Pollice su iniziativa! Gli strumenti scelti sono giusti per questo. Anche il flusso è buono. –