Skip to content

Commit

Permalink
Merge branch 'tech-infrastructure'
Browse files Browse the repository at this point in the history
  • Loading branch information
PeterJCLaw committed Sep 18, 2021
2 parents 63c6389 + 1026b4d commit 4f222c5
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 0 deletions.
77 changes: 77 additions & 0 deletions docs/infrastructure/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# Overview

Student Robotics has a variety of infrastructure in order to support its mission.
This document aims to provide an outline of the general structure.

Currently our infrastructure as a whole does not have a designed owner, instead
individual pieces are looked after by volunteer Teams or just by volunteers who
have historically maintained them.

Since September 2021 SR has had an Infrastructure Team which is responsible for
maintaining the common aspects of the organisation's infrastructure. That team's
remit has signficant overlap with the services mentioned in this section, though
there are things mentioned here which other teams are responsible for.

## Website

Our website consists of a main public facing site at https://studentrobotics.org
as well as a collection of other sites which appear at various paths off the
root domain. This runbook is an example of such a sub-site, as are the
competitor-facing documentation which appears at [`/docs`][slash-docs].

These sub sites (and the main website itself) are hosted as GitHub Pages, with a
separate NGINX instance acting as a [reverse-proxy][reverse-proxy] to facade
these and other services onto the root domain. Currently we use Digital Ocean
for the hosting of our [infrastructure][infrastructure] as well as for DNS and
TLS termination. Our domains are registered with Namecheap.

[slash-docs]: https://studentrobotics.org/docs
[reverse-proxy]: https://github.com/srobo/reverse-proxy
[infrastructure]: https://github.com/srobo/infrastructure

### Competitor Services

During the competition, there are a number of [hosted services](./competitor-services.md)
which the competitors use. These have their own managed configuration and are
typically hosted for the duration of the *competition year* only.

### Competition Services

During the competition event we use the [SRComp suite][srcomp-suite] of tools to
help run the matches, including a VM to host a public-facing copy of the HTTP
API for use on the website.

[srcomp-suite]: https://github.com/PeterJCLaw/srcomp/wiki

## Development: GitHub

A lot of our collaborative work (including hardware and software development, as
well as general task management) takes place [on GitHub][git-and-github], within our
[`srobo`](https://github.com/srobo) organisation.

We also have a separate [`srobo-legacy`](https://github.com/srobo-legacy)
organisation which contains some archived git repositories that pre-date our use
of GitHub. Moving these over to the main organisation and de-duplicating the
repositories is an [ongoing project][legacy-repository-migration].

[git-and-github]: ../volunteering/git-and-github.md
[legacy-repository-migration]: https://github.com/srobo/tasks/issues/179

## Email, Documents: Google

For our email (`@studentrobotics.org`) accounts as well as document sharing we
use Google Workspace. Google Groups are used for various mailing lists.

## Mailing lists

For sending some batch emails we use Mailchimp and Google Groups.

For many of our mailing lists we compose the emails in the form of pull requests
to repositories on GitHub, enabling review & feedback before sending as well as
providing a history which acts as a wealth of templates for sending similar
emails in the future.

Some such repositories are:

* [team-emails](https://github.com/srobo/team-emails/): Emails to competitor teams
* [volunteer-emails](https://github.com/srobo/volunteer-emails/): Emails to volunteers from other volunteers
35 changes: 35 additions & 0 deletions docs/infrastructure/competitor-services.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Competitor Services

During the competition season, there are a number of hosted services which the
competitors use. These are [managed using `puppet`][server-puppet] to configure
a "competitor services" VM, typically within Digital Ocean.

[server-puppet]: https://github.com/srobo/server-puppet/

The services typically include:

**Forums**
: A space which the competitors can use to chat with each other and with
mentors and to ask for help with developing their robots.
Historically we have used [PHPBB](https://phpbb.com), although for SR2021 we
have moved to using Discord with a bot to [gate entry](discord-gated-entry).

**[IDE](https://github.com/srobo/srobo-ide/)**
: A hosted web-based environment which allows competitors to develop code for
their robots without needing to install anything on their own computers.

**User accounts**
: User accounts are needed for access to the IDE and our self-hosted forums.
We also host a [management interface](https://github.com/srobo/nemesis/) so
that team-leaders can administer the user-accounts of their teams.

**Ticket access**
: At the physical competition we gate entry through the use of tickets which
competitors download from the website ahead of time.

**[Code submitter](https://github.com/PeterJCLaw/code-submitter/)**
: For the virtual competitions, this is a mechanism for competitors to submit
the code for their virtual robots.


[discord-gated-entry]: https://github.com/srobo/discord-gated-entry/

0 comments on commit 4f222c5

Please sign in to comment.