Ephemeral Environments
I've been working on something for people who teach testing in public. I want to share this, as I think it's useful. Shortly, I'll clean it up to make it open-source, and I'll teach people how to use it and set it up.
In order to provide these environments, you'll need: A DigitalOcean account (for the server), a Cloudflare account (for DNS), Ansible on your local machine, a public/private key pair, a github repo or two, and a sense of what's possible.
It's important to me that people can work in a real development environment. That means, to me, that they should:
- Have a file system that they can use as they wish
- Have a command line with no restrictions to let them take action
- Have a file editor to let them make changes
- Have a web server to let them see output in a 'nice' way (especially coverage)
We can't expect people to use their own machines – their work machine is locked down, or they don't feel happy about installing novel tools. Or they've left it behind. Or it's a tablet.
We can't expect them to install a load of tools or to rely on temporary licenses.
We can't expect them to download loads of stuff over conference / hotel wifi – let alone install it in the first 30 minutes of a 45-minute talk.
We can't expect everyone to download and install the tools beforehand.
We can't do tech support, in the workshop, for all the kit in the room.
Clearly, this is idealistic – there is no solution.
Buut....
As a tester, I know something about orchestration. I can leverage that, and with the help of several LLMs and standing on the shoulders of vast and competent open-source projects, I have leveraged it into something I've used at conference scale. I'd like to share it with you.
- It runs in a browser, needs no downloads, is conference wifi-friendly, offers everyone their own VSCode in the browser.
- Through the relatively-familiar world of VSCode, it offers access to a user on a DigitalOcean server. That means that people get a browsable file system and a proper commandline.
- The scripts set up whatever is wanted on the server. Currently, I've got bits to set up the comandline tool
llm
with plugins and keys to access various models, Python dev env with Pytest tests (and coverage) serving human-readable stuff over Flask, a Javascript dev env with Jest tests (and coverage) serving stuff over Nginx. - To make the environments accessible, each server has useful URL working over https with a viable certificate, a cover web page linking to 10 user pages, and each user page links to the VSCode browser and to a few web-served endpoints.
- The scripts 1) set up a droplet image to be reused 2) make copies of that and configure them. Once you've got a droplet image from script (1), you can run (2) several times in parallel – they take 20-30 minutes to stand up an environment.
Alternatives


Comments
Sign in or become a Workroom Productions member to read and leave comments.