This guide covers how to release labs and projects in CS 1, CS 2, CS 3x, and CS 24. There are three primary steps.
Step 1: Check/Set Up GitLab Tests
Go to the autotester for the class. For example, if you are releasing on CS 1, the link you should go to is https://gitlab.caltech.edu/autotesters/cs1/-/tree/prod. Ensure that a folder for the project you are trying to release exists.
Open up the folder for the project. The following should hold:
- The outer folder name is the grade: i.e., A, B, C, D.
- Each inner folder has the same tests directory. If this does not hold, you can copy and paste this over from the project of interest.
- Make sure there is a file called init.py in the tests directory.
For CS 1
In each of the test.py files in the main tests directory, make sure the last part of
def arguments(self, case):
arguments = ['-vv', '--color=yes', '--no-header', '--disable-warnings', '-rN', '--pyargs', '--rootdir=/data', 'tests', '-k', '2.A']
is correct. Start from the lowest test, whose name should be 0.letter. Ensure that the next highest one is 1.letter, and so on.
In both the student project and the reference solution, make sure the repository contains a mainfest.json file. Open up this file; it includes the names of the files the students will be writing in. If there is a statement saying "status": "closed", delete that statement (and any comma in the line before). This opens up the project.
Make sure both the student project and the reference solution repositories have a .gitlab-ci.yml file that contains test information.
Push to the repository, and don't forget to tell the professor(s) to pull.
Step 2: Release the Project
Fork over the student starter code repository to the correct directory on gitlab, which will be something like "https://gitlab.caltech.edu/cs2-25wi/project01". Make sure the directory you fork to is public (globe symbol) and that the name is all lowercase, as that is essential for the project release tool to work.
Also make sure to fork over the reference solution repository to the correct repository on gitlab, which will be something like "https://gitlab.caltech.edu/cs2-25wi/project01-success".
How do I fork a respository?
In the main webpage of the repository, there should be a "Fork" button in the top right corner.
Run the Gitlab test pipelines on both newly-forked repositories. Make sure the reference solution passes and the "empty" student starter code fails.
- To test the student starter code repository, make a project for yourself and then run the tests locally on your own computer with the caltech-cs tool. The command will look something like: cs gitlab create-repo project02 jzhou2.
- To test the reference solution, go to the reference solution repository on Gitlab. Go to settings, then CI/CD, then runners and enable runner-oobleck-unsecured.
Add the project on the project release form. You can choose a category for randomized student repository names (for instance, dog breeds). Make sure the project name is correct, and choose the previous project correctly (for instance, if you are trying to release project05, the previous project should be project04). Make sure you put in the correct due date, and set the time to 11:30pm. Additionally, make sure the number of students makes sense for the assignment (e.g., if it is a lab, you can set it to 2).
Project release form password:
vanshvansh
Go to the course website on labradoodle and update the _data/release.yml file, uncommenting the project of interest. Make sure the links are correct and push your change.
Use the caltech-cs tool to create an assignment on the canvas and website. The command is formatted as "cs canvas create-assignment Projects project02 4/15/25". (For the website, you can replace "canvas" with "website".)
Check that the project appears on all of the following:
- course website (with the corrrect due date).
- extension form: extensions.caltech.codes. This website might take a bit to update.
- registration form: register.caltech.codes
- correct GitLab directory. For example, if the course you are working in is cs1-25sp, the project should appear in the directory https://gitlab.caltech.edu/cs1-25sp.
If it seems that anything has gone wrong, you can always delete the project and re-register it. Additionally, you can get another TA to register and check, for instance, that it is not the reference solution.
Step 3: Update Course Staff
Check that student guide has no glaring errors and that the TA guide is available.
Then, send out a message to course staff announcing that the project has been released. Include the following info:
- the link to the root repository ("empty" repository for student starter code).
- the link to the reference solution repository.
- the link to the student guide. Make sure to check with the professor(s) that this is all good to go.
- the link to the TA guide.
Send this message in the main channel of the discord (#ta-chat), and let the TAs know they can ask you/course leadership if they have any questions.