No description
Find a file
2018-08-23 13:11:57 +02:00
doc Add updated documentation and tests 2018-08-23 13:04:28 +02:00
src Improves discovery of modules 2018-08-20 16:07:07 +02:00
tests Add updated documentation and tests 2018-08-23 13:04:28 +02:00
.gitignore Add _build 2018-08-16 18:52:33 +02:00
.gitlab-ci.yml Fix: CI build doc in doc path 2018-08-23 13:11:57 +02:00
config.yml Rewrite creating repo and course 2018-08-14 18:24:17 +02:00
gitlab.rb Rewrite creating repo and course 2018-08-14 18:24:17 +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 Update README.md 2018-07-18 12:39:04 +02:00
setup.cfg Add updated documentation and tests 2018-08-23 13:04:28 +02:00
setup.py Fix: Set explicit version of gitlab python module 2018-08-23 13:07:46 +02:00
Students.csv Add example csv 2018-05-15 18:23:36 +02:00
tox.ini Add updated documentation and tests 2018-08-23 13:04:28 +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.