No description
Find a file
2018-08-16 18:52:33 +02:00
.gitignore Add _build 2018-08-16 18:52:33 +02:00
.gitlab-ci.yml Load CI_REPO_HOST from environment 2018-08-16 13:00:00 +02:00
abgabesystem.py Adds some documentation describing the rewritten commands. 2018-08-16 13:08:49 +02:00
check_deadlines.sh Check deadlines 2018-06-06 18:11:41 +02:00
conf.py Add sphinx documentation 2018-06-01 13:59:55 +02:00
config.yml Rewrite creating repo and course 2018-08-14 18:24:17 +02:00
deadline.sh Rename deadlines 2018-06-06 17:20:21 +02:00
gitlab.rb Rewrite creating repo and course 2018-08-14 18:24:17 +02:00
index.rst Remove class Course from documentation index 2018-08-16 13:11:18 +02:00
make.bat Add sphinx documentation 2018-06-01 13:59:55 +02:00
Makefile Add sphinx documentation 2018-06-01 13:59:55 +02:00
notes.md Add stuff 2018-04-30 09:21:25 +02:00
python-gitlab.cfg Fixup: Add missing newline 2018-04-18 15:52:46 +02:00
README.md Update README.md 2018-07-18 12:39:04 +02:00
Students.csv Add example csv 2018-05-15 18:23:36 +02:00

The abgabesystem

Setup

  1. Optional: If you have not previously set up GitLab for the abgabesystem, you can use the playbook in playbook.yml to setup your instance.

  2. Create a new group with the name of the course.

  3. Create a fork of abgabesystem inside that group.

  4. Configure config.yml and generate an SSH key pair. Add the private key to the fork as the secret variable SSH_PRIVATE_KEY. Add the public key to config.yml as deploy_key.

  5. Export the student list from StudIP and add it to the project.

  6. Create an API key with admin access and add it to the fork as the secret variable PRIVATE_API_TOKEN.

  7. Add all administrative users to the group of your course (but not the students).

The CI jobs should then create the student repositories.

 gitlab_rails['gitlab_default_can_create_group'] = false
 gitlab_rails['gitlab_default_projects_features_container_registry'] = false

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

 # if you don't have TLS otherwise
 letsencrypt['enable'] = true

Also, you should

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

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.