Skip to content

Utilisation de GitLab CI pour évaluer les devoirs des étudiants

GitLab Classroom utilise GitLab CI pour évaluer les devoirs des étudiants. Cela permet de vérifier que les devoirs des étudiants respectent les consignes données par les enseignants.

Chaque langage de programmation a ses procédures de tests unitaires ou fonctionnels. Cependant, tous ont la possibilité de fournir un fichier compatible JUnit pour les tests.

C'est ce fichier que sera analysé par Gitlab Classroom pour évaluer les devoirs des étudiants.

Il faut donc envoyer un fichier xml compatible JUnit à GitLab Classroom pour que les tests soient évalués.

Le point d'entrée de l'application pour cela est /assignment/submit.

Exemple d'appel à l'API

On exécute cela après les tests afin de ne pas être bloqué en cas d'erreur.

after_script:
  - |
    if curl --fail -X POST https://lpmiaw.univ-lr.fr/gitlabclassroom/assignment/submit -H "Authorization: Bearer $ID_TOKEN" -F "file=@./nom_fichier.xml" ; then
      echo "✅ successfully uploaded xml file"
    else
      echo "❌ error when uploading xml file, skipping..."
      ERROR=1
    fi

Il faut que récupérer le token d'identification de la CI pour pouvoir envoyer le fichier xml. Ce token est disponible dans les variables d'environnement de la CI.

# .gitlab-ci.yml
  id_tokens:
    ID_TOKEN:
      aud: 'URL de Gitlab Classroom'

Ce token permet de vérifier que c'est le bon utilisateur pour le bon projet qui envoie le fichier xml.

Exemples de fichiers .gitlab-ci.yml

Vous trouverez à terme dans le dépot de GitLab Classroom des exemples de fichiers .gitlab-ci.yml pour les langages les plus courants. (PHP, Java, Python, Javascript)

N'hésitez pas à contribuer à ce dépot pour ajouter des exemples pour d'autres langages.