[External Mode] GitHub Action interface changes (inputs, env, validation, backwards compatibility)
Goal
Add a new Action execution mode (external / private) while preserving current repository-config mode.
Scope
-
Update action.yml inputs:
execution-mode (repo default, external optional)
grading-config-id (required in external)
autograder-cloud-url (required in external)
autograder-cloud-token (required in external)
-
Keep existing inputs for repo mode unchanged.
-
Update github_action/entrypoint.sh:
- Pass new arguments to Python entrypoint when present.
- Validate mode-specific required env vars.
-
Update github_action/main.py:
- Parse new args.
- Enforce mode-specific validation rules.
- Route execution path based on mode.
Backwards Compatibility Requirements
- Existing GitHub Classroom workflows (repo mode) continue working without modifications.
- Existing required inputs keep same meaning in
repo mode.
Acceptance Criteria
repo mode remains default and stable.
external mode fails fast with actionable errors when required params are missing.
external mode receives and passes config ID/cloud URL/token to service layer.
- Unit tests cover arg validation and mode routing.
[External Mode] GitHub Action interface changes (inputs, env, validation, backwards compatibility)
Goal
Add a new Action execution mode (
external/private) while preserving current repository-config mode.Scope
Update
action.ymlinputs:execution-mode(repodefault,externaloptional)grading-config-id(required inexternal)autograder-cloud-url(required inexternal)autograder-cloud-token(required inexternal)Keep existing inputs for
repomode unchanged.Update
github_action/entrypoint.sh:Update
github_action/main.py:Backwards Compatibility Requirements
repomode.Acceptance Criteria
repomode remains default and stable.externalmode fails fast with actionable errors when required params are missing.externalmode receives and passes config ID/cloud URL/token to service layer.