Onboarding a new researcher¶
End-to-end checklist for getting a new researcher access to the FCEFyN testbed so they can run tests, edit code, and merge PRs.
For purely external developers (no lab access, just running tests remotely), see Developer remote access instead.
1. GitHub access¶
- Ask the new researcher for their GitHub username and the public part of an SSH key they will use for git over SSH.
- Add them to the
fcefyn-testbedGitHub organisation as a member. - Add them to the appropriate team:
lab-reviewers— can approve runs on the physical lab (physical-labenvironment) infcefyn-testbed/lime-packages.maintainers— can merge PRs tomaster. Reserved for sustained contributors.
- If they will work on
libremesh-tests, add them there too.
2. SSH keys on the lab host¶
- Append their
ed25519(orrsa) public key to/home/laryc/.ssh/authorized_keyson the lab host. - Verify they can reach the host from outside (after step 3 they will use ZeroTier; before that, the lab admin can give them a temporary forwarded port).
3. ZeroTier (remote access)¶
- Send them the install/auth guide: ZeroTier remote access.
- After they join the network with
zerotier-cli join <network-id>, authorise their node in ZeroTier Central (thezerotierAnsible role README explains this step). - Assign them a stable IP under "Managed IPs" in ZeroTier Central. Send them their assigned IP.
They should now be able to ssh laryc@<assigned-zt-ip>.
4. Local tooling¶
Ask them to install on their personal machine:
uv(pip install uvor official installer) — runs the test suites inlibremesh-tests.ghCLI — useful for workflow dispatch and PR review (brew install gh/apt install gh).- A GPG key set up locally — signed commits are required on this repo.
GPG key quick setup:
gpg --full-generate-key # ed25519 recommended
gpg --list-secret-keys --keyid-format=long
git config --global user.signingkey <KEYID>
git config --global commit.gpgsign true
# Add the public key to GitHub: https://github.com/settings/keys
5. First test run¶
Walk them through a minimal verification that everything works end-to-end:
- Clone
libremesh-testsandfcefyn_testbed_utilslocally. - From the lab host (over ZeroTier SSH), check the labgrid coordinator and exporter are up:
systemctl status labgrid-coordinator labgrid-exporter
uv run labgrid-client places
- Trigger one CI run from their GitHub account: open a PR to
fcefyn-testbed/lime-packages, watch the build + test jobs flow, approve thephysical-labenvironment when prompted (if they are inlab-reviewers). - Open the CI dashboard and check their run appears.
6. Documentation pointers¶
- Day-to-day operations: Routine operations, Running tests, Labgrid commands.
- When something breaks: Debugging FAQ.
- Adding a new DUT: Adding a DUT, then DUT provisioning, DUT exporter setup.
- Glossary: Glossary — central place for jargon (Labgrid, batman-adv, FIT image, etc.).
7. House rules¶
- All work goes through PRs to
develop. Direct pushes todevelopandmainare blocked. - Commits must be GPG-signed.
- The
summaryjob inlime-packagesCI is a required status check; if it fails, fix the cause, do not merge with--admin. - The lab host is shared. Before doing anything destructive (rebooting, stopping daemons), check the calendar and announce on the lab chat.