Introduction

A collection of scripts that use the GitLab REST API to setup GitLab projects and repositories for a group of students. The functionality is inspired by GitHub Classroom but more light-weight without a graphical user interface.

Course Configuration

Courses are configured using a yaml file. The following entries are supported:

  • gitlab the name of the gitlab server defined in python gitlab module configuration file.

  • series the name of the course series, eg SpaceMed Digital Literacy

  • name the name of the particular course, eg 2025

  • participants list of the participants

  • max_participants (optional) maximum number of participants

  • waiting (optional) list of people on waiting list

  • cancelled (optional) list of people who have cancelled

  • readme a jinja2 template for the README.md file that will be put in each project

  • sessions the list of sessions

    each item should have the following keys:

    • title the title of the session

    • date the the date when the session takes place

    • time the time when it takes place

    • place the locaiton where it takes place

The configuration file can contain other entries which are all passed to the templates.

Below is an example course configuration file.

---
gitlab: charite
series: SpaceMed Digital Literacy
name: 1992
helpers:
  - a.user@some.where
max_participants: 25
participants:
  - svc-sc-slurm1
waiting: []
cancelled: []
readme: |
  # Welcome to {{ name }} Course of {{ year }}

  This file uses [markdown](https://www.markdownguide.org/). Checkout the
  [cheat sheet](https://www.markdownguide.org/cheat-sheet/) for a summary
  of the syntax. GitLab supports various
  [Markdown extensions](https://docs.gitlab.com/user/markdown/)
  (like GitHub).
sessions:
  - title: Session 1
    date: 2025-03-16
    time: 14:00-17:00
  - title: Session 2
    date: 2025-03-23
    time: 14:00-17:00
  - title: Session 3
    date: 2025-03-30
    time: 14:00-17:00
...