Skip to main content

GitHub: set up team repositories

For organizers: connect your GitHub organization once, then give every event a private repository per team and get every builder into theirs.

Written by Ahmed Tamer

The GitHub integration gives every team a private repository in your GitHub organization. Builders are added to their team's repository, judges and mentors get read access, and repositories freeze (become read-only) when submissions close.

It works on two levels, like the Luma integration:

  • Your organization connects one GitHub organization, once.

  • Each event uses that connection and gets its own repositories, one per team. Several events can use the same GitHub organization.

Connect your GitHub organization

  1. Go to your organization's Settings → Integrations → GitHub.

  2. Enter your GitHub organization's name, the name in github.com/<name>, and press Connect GitHub.

  3. GitHub asks you to install the BuilderBase GitHub App on that organization. You need to be an owner of it.

The card shows Connected to github.com/<name> once the App is installed. If it still says it's waiting, press Check again.

You can also start from an event (see below). Either way, the connection is for your whole organization.

A BuilderBase organization connects one GitHub organization, and a GitHub organization can belong to only one BuilderBase organization. To switch, press Disconnect and connect the other one.

Use it for an event

  1. In the event, go to Settings → Integrations → GitHub.

  2. Press Use github.com/<name>. If your organization isn't connected yet, enter the GitHub organization's name here instead, and install the App when GitHub asks.

  3. Press Create repositories. BuilderBase creates a private repository and a GitHub team for every team with at least one accepted member. Repository names end with the team's id, for example team-aurora-cd5f6ece-submission-repo.

How builders get in

A builder can only be added once their BuilderBase profile has their GitHub username. Then:

  1. BuilderBase adds them to their team on GitHub. For someone outside your GitHub organization, GitHub turns that into an invite to join the organization, sent to the email on their GitHub account.

  2. They accept the invite. Only then can they push, and only then do they count as a member on GitHub.

Builders are added when you create repositories, and again whenever a builder:

  • adds their GitHub username, on their team page or their profile, or

  • presses Get access on their My Team page.

The team leader is a maintainer of the GitHub team; everyone else is a member.

Note: A team on GitHub can show 0 members while its builders have invites waiting. GitHub only counts people who accepted. The Builder invites card shows who is waiting.

Builder invites

The Builder invites card on the event's GitHub tab checks GitHub live and shows where every builder stands:

Status

Meaning

Joined

Accepted the invite and has access.

Invite pending

Invited, hasn't accepted yet.

Not invited

Has a GitHub username, but no invite went out.

Invite failed

The invite expired (after 7 days) or GitHub refused it.

No GitHub URL

No GitHub username on their profile, so they can't be invited.

Press Remind to email every builder who still has a step to take. Builders without GitHub are asked to add it, builders with an invite waiting are asked to accept it, and builders with no invite are invited first. One press reminds up to 60 builders; press it again for the rest. Each row also has its own Remind, Invite or Invite again button.

Sync members (shown once every repository exists) checks every team again. Anyone missing from their team's repository is added, and newly assigned judges and mentors get read access. Nobody who is already in, or already invited, gets a second invite.

Judges and mentors

Judges get read access to the repositories of the teams they're assigned to. Mentors get read access to a team's repository when they take one of its help requests. They need a GitHub username on their profile too.

Credential check

Credential check lists everyone on the event with their GitHub and résumé status. Grant access gives someone with GitHub access to a team's repository. Send reminder emails a builder without GitHub to add it.

Freezing

An event's repositories freeze automatically once its last track's submission deadline passes, so judging happens on a fixed version. You can also press Freeze repositories on the event's GitHub tab. Only that event's repositories freeze, never other events' repositories in the same GitHub organization. To reopen one, unarchive it on GitHub.

Disconnecting

Disconnect in your organization's settings stops your events creating repositories and inviting builders. Repositories already created stay on GitHub. Connect again at any time.

If someone uninstalls the BuilderBase App on GitHub, the connection goes back to waiting. Installing the App again reconnects it for every event.

Limits

  • GitHub invites expire after 7 days. Expired ones show as Invite failed; Invite again sends a new one.

  • Organizations on GitHub's free plan that are less than a month old can send 50 invites a day; others 500. Invites over the limit fail.

  • One GitHub organization per BuilderBase organization.

Common questions

BuilderBase says access granted, but I don't see the teams or members on GitHub.

Members appear on GitHub only after they accept their invite. Check Builder invites for who is still pending, and press Remind.

Some builders were never invited.

They had no GitHub username on their profile when the repositories were created. Press Remind to ask them to add it. They're added as soon as they do.

It says the GitHub organization is connected to another organization.

That GitHub organization is already connected to a different BuilderBase organization. Disconnect it there first, or use another GitHub organization.

Can I use the same GitHub organization for my next event?

Yes. Connect it once for your organization, then press Use github.com/<name> in each event.

Can I add someone by hand?

Yes. In GitHub, add them to their team in your organization. Or use Grant access in Credential check.

Did this answer your question?