Skip to main content
Version: Next (unreleased)

Choosing a Trigger

The trigger decides when GrillMyCode runs and generates questions for a student. There are three options. Whichever you pick, you can also start a run yourself at any time from the repository's Actions tab.

At a glance

TriggerRuns when…Best forAI cost
Pusha student pushes code to the default branch (main)Short assignments, and giving students questions to practise with while they workOne run per push
Submission taga student pushes a tag you named, such as complete or phase1Assessing finished work once, and projects handed in over several stagesOne run per submission
Manual onlyyou click Run workflowDeciding the timing yourself, such as one run after the deadline or a trial on a few repositoriesOne run per click

Push

Every time a student pushes to the default branch, GrillMyCode generates a fresh set of questions about all of their work so far. The new questions replace the old ones in the same issue.

Choose this when:

  • the assignment is short, finished in one sitting or over a few days
  • you want students to see questions while they work, as practice or a self-check
  • you want it to "just work" with no extra steps for students

Keep in mind:

  • Students see the questions before they finish, so they have time to prepare their answers. That's good for practice, less so for a surprise oral check.
  • A student who pushes 20 times gets 20 runs, so it costs more than the other two options on busy repositories. (If a student pushes again while a run is still going, the older run is cancelled.)

See Push to Default Branch for a ready-to-use workflow.

Submission tag

Nothing happens on an ordinary push. GrillMyCode runs only when a student marks their work as done by pushing a tag, a label attached to a commit. You choose the tag names. The student runs:

git tag complete
git push origin complete

This is the right choice for phased work built up over a longer period, where each stage gets its own assessment. It is just as useful for a single final submission: one tag, one assessment of the finished work.

One final tag

Name a single tag, such as complete. The student is assessed once, on the work they chose to hand in, not on every half-finished commit along the way.

Choose this when:

  • you want to assess the finished assignment, not work in progress
  • you want to keep AI costs down on assignments where students push often
  • you want students to make a deliberate "I'm done" step

Several milestone tags

Name one tag per stage, such as phase1, phase2 and final. Each stage gets its own assessment issue, PDF and instructor-repository folder, so earlier stages are kept when later ones arrive.

Choose this when:

  • a project is built and handed in in stages over weeks
  • you want to check understanding at each checkpoint, not just at the end

You also choose what each later milestone covers:

Settingphase2 asks about…Good for
All work to date (cumulative, the default)everything the student has written, including phase 1Checking the student still understands the whole project as it grows
Only work since the previous tag (previous-tag)just what changed after phase1Keeping each stage's questions focused on that stage's new code

Keep in mind (for both kinds of tag):

  • Students need to know the tag commands. Put them in the assignment instructions.
  • The tagged commit must be on the default branch. A tag on any other branch fails the run, so the student can see their submission didn't count.
  • To resubmit under the same tag, the student moves it to their latest commit and pushes it again: git tag -f complete then git push --force origin complete. The new questions replace the old ones for that tag.

See Tag Submission for a ready-to-use workflow, and for how tags fit with Classroom 50's own submission settings.

Manual only

GrillMyCode never runs by itself. You start each run from the repository's Actions tab (Actions → GrillMyCode → Run workflow).

Choose this when:

  • you want to decide exactly when questions are generated, for example once, after the deadline, so no student sees their questions early
  • you are trying GrillMyCode out on a few repositories before rolling it out
  • you only want questions for some students, such as spot checks

Keep in mind:

  • Runs are started one repository at a time, which takes a while for a large class.
  • Nothing happens unless you remember to start it.

See Manual Run Overrides for changing settings on a single manual run.

Quick decision guide

If you want…Choose
Students to get practice questions as they goPush
One assessment of the finished assignmentSubmission tag, one tag
An assessment at each stage of a longer projectSubmission tag, one tag per milestone
Each stage's questions to cover only that stage's new codeSubmission tag with only work since the previous tag
To decide the timing yourselfManual only
A run each time a student uses gh student submit on a Classroom 50 tagged commit assignmentSubmission tag with submit/* (details)

Can I use more than one?

Manual runs work alongside any trigger.

Push and submission tag don't mix well in one workflow: a student who pushes and then tags would be assessed twice for the same work, which is why the Workflow Wizard offers one or the other. If you really want both, for example practice questions on every push plus a formal assessment at the end, keep two separate workflow files, each with its own settings.

tip

The Workflow Wizard asks which trigger you want on its Trigger step and builds the workflow for you.