User Tools

Site Tools


vcs:gitlab_roster_usage

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
vcs:gitlab_roster_usage [2020/06/29 16:46] – [Accessing Repositories] chudlervcs:gitlab_roster_usage [2020/09/16 16:17] (current) chudler
Line 1: Line 1:
 =====Git Auto-creation===== =====Git Auto-creation=====
-This is intended to be a simple process that does heavy lifting and stays out of the way.+This is a simple process that does some heavy lifting for your course and otherwise stays out of the way
 + 
 + 
 +=====How it Works===== 
 +To get started, read [[vcs:roster-based_repository_creation | The Introduction]], and the rest of this document. Email ''techstaff@cs.uchicago.edu'' and indicate which course you would like to use it with. We can start creating project structures immediately.
  
 For each course that is enabled for automation, by default: For each course that is enabled for automation, by default:
  
-  * A dedicated Namespace is created in Gitlab +  * A dedicated Namespace is created in Gitlab, using course numbers by default. 
-  * Registrar data (rostersare processed nightly, and data is refreshed every 1 hour +  * Repo and Project resources are refreshed from official rosters each night. Any customizations you make are refreshed and merged with the upstream data sources once per hour. 
-  * Each student is given an individual Project (git repository) +  * Each student is given an individual Project beneath the main project (git repository). 
-  * Nominated Graders get appropriate access roles to Projects and the enclosing namespace +  * Nominated Graders get appropriate access roles to Projects and the enclosing namespace. 
-  * Subsequent customization is ignored or respected by the automation +  * Subsequent customization is ignored or respected by the automation (add, drop). 
-  * The tool is flexible and can be modified to suite different situations.+  * An administrative project is established for Instructors and TAs to optionally continue to modify the provisioner (refresh rate is once per hour). 
 +  * The tool is flexible and can be modified to suit different situations.
  
 =====Accessing Repositories===== =====Accessing Repositories=====
 The Gitlab server emails each individual at the time they are granted access to a resource. If you have not received an email with repository details and think that you should have, please write [[ techstaff@cs.uchicago.edu | Techstaff ]] and let us know. The Gitlab server emails each individual at the time they are granted access to a resource. If you have not received an email with repository details and think that you should have, please write [[ techstaff@cs.uchicago.edu | Techstaff ]] and let us know.
  
-Hints: +Hints for finding a repository
-  * The current server is named [[ https://proj.cs.uchicago.edu | Proj ]]+  * The current server is named [[ https://proj.cs.uchicago.edu | Proj ]], and you can login and look around
   * The entire namespace path is identical to the Course identifier, e.g., ''https://proj.cs.uchicago.edu''/''mpcs-53001-aut-20''   * The entire namespace path is identical to the Course identifier, e.g., ''https://proj.cs.uchicago.edu''/''mpcs-53001-aut-20''
 +  * Use Gitlab built-in search if necessary
  
 ======Controlling The Rosters====== ======Controlling The Rosters======
  
-The overall automation tool is controlled by Techstaff. However, online customization of repository and project details are available to instructors and other course staff.+The overall automation tool is controlled by Techstaff. It must be enabled **before** you can modify the provisioner's behavior. However, online customization of repository and project details are available to instructors and other course staff after Techstaff has set the tool to work for you.
  
-====Internal Repo-based Configuration====+=====Repo-based Customizations=====
  
-Before establishing any repositories, the automations server can be optionally configured to read configuration that is published in **your own** secure Gitlab repository. Note that the automations can only read from certain known Gitlab servers.+Before the automations creates the first repository, it can be configured to read data that is published in **your own** secure Gitlab repository. Such a repository should be created by you at [[ https://proj.cs.uchicago.edu]]. This project should exist before your course starts, in its own namespace with limited access. It will probably exist after the course ends, and you can use it to capture the list of TAs as it changes over time, along with other metadata, and course artifacts. It is also possible to control multiple simultaneous course instances through this single "master" repository.
  
-Every hour, the automations bot will checkout the head of your ''main'' or other nominated branch and scan a directory for ''YAML'' files containing course and enrollment data.+Every hour, the automations bot will checkout the head of your ''main''or other nominated branchand scan a directory for ''YAML'' files. It expects to find course and enrollment data in a particular format. Configuration found there is merged with upstream sources to form the execution plan against the Gitlab API. The tool will use your configuration data and the UC official roster data to build project and repository structures for one, or multiple courses.
  
-Because of Roster Config Merging, you typically only need to /augment/ Registrar data.+Because of the aforementioned Roster Config Merging, you should expect to merely //augment// the Registrar's enrollment data. You are able to add and drop students, and elevate or modify other roles. As there is no other datasource at this time, you *must* add TAs to this file, for example. See [[More Roster Configuration Examples | Advanced Usage]].
  
-It is also possible to specify partial information, or split data across multiple files. All configuration files are merged with others having the same identifier.+It is also possible to specify partial information, or split data across multiple files in your repository. All configuration files are merged with others having the same course identifier. For a [contrived] example, one may wish to modify parameters of the repositories on a per-student basis. This structure is easier to maintain if one file is created for each student, instead of placing all data into one ''YAML'' file. 
 + 
 +=====File Format===== 
 + 
 +Files must end in a ''YAML'' file-extension and be in a pre-determined directory. If you have created your own repository, as suggested above, just tell us where to fetch the files from. If we created it for you, the directory is named ''autorevcon.d'' at the root of your ''Admin'' repository, which is contained in the main Course Project. 
 + 
 +All structures must begin with a key that uniquely and globally identifies the course and offering that is currently being taught. The format of the key is opaque to the provisioner and is not parsed, and you are also not restricted to choosing from known keys. Therefore, you are able to create repositories that have no upstream datasource, for testing, future use, and other devices. The example below uses a familiar key structure intended for real courses.
  
 <code> <code>
Line 43: Line 55:
 </code> </code>
  
 +When your configuration is split across multiple files, merging takes place on the basis of the key. So, be sure to use the same key in different ''YAML'' files if your intention is to augment, and use //different keys// if you wish to have entirely different top-level projects created for you.
  
-An example to create course without any associated Registrar data is the same, but includes +An example to create another course without any associated Registrar data is the same as above, but includes more memberships
-more memberships+
  
 <code> <code>
Line 64: Line 76:
 </code> </code>
  
-==Configuration Merging==+As the example shows, the automations will consume this structure and map the groups of people ("tas", "students") into roles appropriate for use within Gitlab. Only these four groups are recognized at this time, and these are CNetIDs. 
 + 
 +===Configuration Merging===
 Techstaff will augment any configuration you provide with roster data from the University Registrar. The union of memberships is considered, and scalar values are overridden by your values. Techstaff will augment any configuration you provide with roster data from the University Registrar. The union of memberships is considered, and scalar values are overridden by your values.
  
 [[More Roster Configuration Examples]] [[More Roster Configuration Examples]]
  
/var/lib/dokuwiki/data/attic/vcs/gitlab_roster_usage.1593467163.txt.gz · Last modified: 2020/06/29 16:46 by chudler

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki