No description
Find a file
2018-09-20 16:09:37 +02:00
doc Add updated documentation and tests 2018-08-23 13:04:28 +02:00
src Create subgroup for enrolled students so when creating projects we do not need the exported list of students and can use the subgroup instead. 2018-09-20 15:53:40 +02:00
tests Cleanup 2018-09-18 12:56:41 +02:00
.gitignore Cleanup 2018-09-18 12:56:41 +02:00
.gitlab-ci.yml Add variable for public deploy key 2018-09-20 16:09:37 +02:00
LICENSE Move code into package 2018-08-20 11:26:19 +02:00
python-gitlab.cfg Fixup: Add missing newline 2018-04-18 15:52:46 +02:00
README.md Create subgroup for enrolled students so when creating projects we do not need the exported list of students and can use the subgroup instead. 2018-09-20 15:53:40 +02:00
setup.cfg Add updated documentation and tests 2018-08-23 13:04:28 +02:00
setup.py Fix: typo in dependencies 2018-08-23 13:18:40 +02:00
tox.ini Add updated documentation and tests 2018-08-23 13:04:28 +02:00

The abgabesystem

Setup

Operations 1 and 2 require super user privileges to the API. The rest don't.

  1. Import the students participating in the course into Gitlab. This is required to assign projects to each student. If you have exported a list of groups and functions from Stud.IP you can use that.
# abgabesystem users -s <students.csv> -b <LDAP base domain> -p main
  1. Create a group for your course using
# abgabesystem courses -c <some_course>
  1. Create a fork of this project inside the namespace of the group that has been created and configure your API token (PRIVATE_API_TOKEN) and deploy key (SSH_PRIVATE_KEY) (see .gitlab-ci.yml) for the forked project.

  2. Set up the project for the example solutions and the student projects. If you have pre-existing example solutions place them in <some_course>/solutions/solutions.

# abgabesystem projects -c <some_course> -d <deploy key>
  1. Add all administrative users (e.g. users supervising the course or checking homework solutions) to the group of the course.

  2. At the deadline of each exercise trigger the plagiarism checker using

# git tag <exercise_name>
# git push --tags

It can be useful to do this from a cronjob.

 gitlab_rails['gitlab_default_can_create_group'] = false

 # see gitlab documentation and add your ldap config
 gitlab_rails['ldap_enabled'] = true

Also, you should

  • set the default project limit for each user to 0
  • set default settings for projects to partially protected so that developers (e.g. students) can not force push tags and commits to protected branches (master) which is important for plagiarism controls.

Workflow

To trigger the deadline of an exercise (e.g. Sunday at 15:00), push a tag (e.g. ex1) to the cloned abgabesystem project. The abgabesystem's CI job creates a tag of this name inside each student's project and then creates a checkout of each project's repository and runs JPlag to check for plagiates. The results can be found inside the job artifacts. The results are saved for each tag and can be downloaded as an archive.