The next generation course building CI tool for A+
Keep updating...
- Get access to Shepherd from A+ using Oauth. ( Get
signal
fromflask-lti-login
and authenticate user). - model: User
- Group users, grant user different privileges and permissions according to the group.
- Tree-like structure. Example: Aalto → CSI → CS → Programming_1.
- model:
- Group: many-to-many relationship with User.
- GroupPermission: the permission types of Group. Currently two types:
(create) subgroups
,(create) courses
. - CreateGroupPerm: the permission of groups for creating (sub)groups.
field
group
is the group with the(create) subgroups
permission; fieldtarget_group
is the group whichgroup
can create subgroups under. - CreateCoursePerm: the permission of groups for creating courses. the field
pattern
defines the prefix that the course key should follow. - ManageCoursePerm: the permission for managing courses. The owner roles of a course include
admin
andassistant
.
- Course management interface
- To create new courses, the user needs to be in a group with the
(create) courses
permission. - model: CourseInstance
- Record the build processes of courses
- model: Build, BuildLog
- SSH key management
- model: GitRepository
Handle push webhook in GitHub
or Gitlab
.
-
Define Build tasks, define automated pipeline (pull/clone->build->deploy->clean).
-
- Define background task for deploy key pair generation.
- Define the scheduled task for key validation.
Message broker for updating frontend statues display in realtime, and also routing realtime log output to frontend.