Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow usage of different graders #4

Open
nwalters512 opened this issue Aug 12, 2018 · 2 comments
Open

Allow usage of different graders #4

nwalters512 opened this issue Aug 12, 2018 · 2 comments
Assignees

Comments

@nwalters512
Copy link
Member

All of Zephyr is currently hardcoded for the Catch grader. We'll need to allow Zephyr to use different graders depending on the course. It's likely that each piece of Zephyr will need a different solution for this.

Student CLI

For student usage, the workflow is simply running zephyr in an assignment directory. So, Zephyr will need to understand how to grade an assignment based only on the directory. For that, I'm thinking a zephyr.yml file in the root of an assignment that names the required grader. We can read that file to determine what to do. We could even be clever like npm and recursively search upward in the filesystem looking for a zephyr.yml file to identify an assignment root.

Staff CLI

This should likely be configurable via the config.yml that Zephyr already expects to set various repo info, rosters, etc. This could maybe also be overridable on a per-assignment basis, with assignment config taking precedence over course config.

PrairieLearn

Given that each course + grader could have a different set of dependencies, my current thought is actually that we'll just build one Docker image per grader. We could provide a plumbing package so that the only thing needed to do to wire up a grader to PL is something very roughly like

import grader from './grader.js'
import plRunner from '@illinois/zephyr-pl-runner'

// grader-specific code here...

plRunner.run(grader);
@nmagerko
Copy link
Collaborator

Would it be better to handle PrairieLearn-related stuff with a different issue? It seems like that would be a specific grader implementation (like a docker-runner implementation), but maybe I'm misunderstanding.

For now I was just planning to change Zephyr so that the student and staff CLI don't reference zephyr-catch-grader in particular when handling a run. Instead they'd just use some configurable input as you described.

@nwalters512
Copy link
Member Author

Yep, that makes sense. As long as we keep the interface in such a way that it's still usable from PL, we're good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants