Deploying your assignment
After validation passes, the Continue to Deploy button unlocks. This article walks through the Deploy step — picking your GitHub organization, choosing a repository name, what happens during the push, and what to do when it fails.
Written By Alan Gandy
Last updated About 1 month ago
Once validation passes, the Continue to Deploy button unlocks and the wizard advances to the Deploy step. This is where CodeTeach actually creates a GitHub repository in your organization and pushes the assignment to it.

Prerequisites
Two things must be in place before deploy will work:
- A GitHub organization with the CodeTeach App installed. If the App isn't installed, you'll see an Install GitHub App button instead of the deploy form. See Setting up GitHub for CodeTeach for the full prerequisites walkthrough.
- The assignment status is
validated. If it isn't, the Deploy step shows a banner explaining what to do (usually: go back to Review & Edit, approve instructions, run the autograder check). See The autograder check.
Filling in the deploy form
Two fields:
Organization / Account
Dropdown of every GitHub organization where you've installed the CodeTeach App.
Personal accounts are intentionally excluded. GitHub Classroom can't use templates from personal accounts, so allowing the choice would just produce broken assignments later. If your personal username appears in the dropdown, that's a bug — flag it via the chat widget.
If only your personal account shows up (and the dropdown is otherwise empty), you'll see an amber notice: "GitHub Classroom doesn't support personal accounts for template repos." Click Install on another org / account to get to GitHub's install screen and pick an organization.
Repository Name
The name of the repo CodeTeach will create in your selected org.
Constraints:
- Lowercase letters, digits, and
-/_/.only - Spaces and other characters are auto-converted to
- - Maximum 100 characters
- Trailing hyphens are stripped at submit time (so you can type
notebook-while still composing without losing the trailing dash mid-edit) - Leading hyphens are blocked (GitHub doesn't allow them)
Convention: kebab-case with course code and assignment number — cs101-lab03-binary-search, 1436-ch10-header-files. The org/repo combination shows up in the assignment URL students see.
Preview
Once both fields are filled, a small preview appears: org-name/repo-name. This is exactly what GitHub will see.
Clicking Deploy
When you click Deploy to GitHub:
- The button shows a spinner; status flips to "Deploying…"
- CodeTeach calls the GitHub App to create a new repo in your org
- Pushes the starter code as the
mainbranch - Pushes the solution code as the
solutionbranch (separate branch — students never see this) - Installs the autograder workflow file at
.github/workflows/classroom.yml - Pushes
Instructions.mdandREADME.mdto the root - Records the repository URL in your CodeTeach session
The whole thing usually takes 30–60 seconds. The wizard polls automatically.
When deploy finishes:
- Status flips to
deployed - A Repository section appears with the org/repo name and a View Repository button
- A "Deployed — validation pending" banner appears (see Reading the post-push validation banner)
- The Download Assignment ZIP section appears below
What if deploy fails?
The wizard shows an Error card with the failure reason and three actions:
- Try deploy again — re-runs the deploy from scratch
- Download ZIP instead — gets you the artifacts so you can deploy manually
- Back to dashboard
Common failures and fixes:
"GitHub App not installed on org"
The org you selected doesn't have the App. Click Install on another org / account → pick the right org → return and retry.
"Repository already exists"
The repo name you chose is already taken in that org. Pick a different name. (CodeTeach won't overwrite an existing repo by default — too risky for a published assignment.)
"Object does not exist" / random GitHub timeouts
GitHub's git database has eventual consistency — sometimes a brand-new branch isn't immediately visible to follow-up calls. CodeTeach automatically retries with backoff. If you see this and the deploy ultimately fails, just click Try deploy again — it usually succeeds on retry.
"Lost connection to deploy status"
Your browser couldn't reach the API for several consecutive checks. The deploy may still be running in the background. Refresh the page or check your dashboard — if the assignment shows deployed, it succeeded.
"Deployment timed out after 3 minutes"
Same as above. Refresh, check status. If still in deploying, give it another minute. If permanently stuck, click Try deploy again.
After successful deploy — what's next
You're not done — but the heavy lifting is. The assignment is live in your GitHub org. Three steps remain:
- Wait for the post-push validation banner. GitHub Actions runs the autograder against the solution branch automatically; CodeTeach watches and shows you the result. See Reading the post-push validation banner.
- Set up the Classroom assignment. Wire the new repo into GitHub Classroom so students can join. See Setting up your GitHub Classroom assignment.
- (Optional) Save the Classroom invite URL — for record-keeping and easy access from the dashboard later.
Idempotent re-deploys
If you accidentally click Deploy when the assignment is already deployed, CodeTeach detects the duplicate and shows an "Already deployed" toast — it won't create a second repo. The page just refreshes to the existing post-deploy state.
Re-deploying after edits
You can't directly re-deploy to the same repo. If you edit an assignment after deploying and want students to see the changes, two options:
- Push to the existing repo manually — clone it, copy your edits in, commit, push. Students who haven't accepted the assignment yet get the new version; students who already accepted get the old one (Classroom forks at acceptance time).
- Deploy to a new repo — change the repo name on the wizard and re-deploy. Use the new one in Classroom.
For substantive content changes, option two is cleaner. For typo fixes, option one is fine.
Where to go next
- Deploy succeeded? → Reading the post-push validation banner explains the three states (pending / passed / failed) you'll see next.
- Deploy failed and you can't recover? → Downloading the assignment ZIP is the manual fallback path.
- Ready to wire it into Classroom? → Setting up your GitHub Classroom assignment.