Support for Multiple Operating Systems, without Defaults or Boilerplate

CI/CD
Jul 16, 2025
Dan Manges
Support for Multiple Operating Systems, without Defaults or Boilerplate

We recently shipped support for specifying the operating system used for RWX runs.

Interface Considerations

When designing the feature, we had to decide how to approach the configuration.

Should the operating system be required in the configuration? We like keeping our configuration syntax as minimal as possible, so we wanted to omit it. We didn't like the idea of having to type boilerplate lines of configuration in every run definition.

However, without specifying, how would we choose which operating system to run? We could always run the latest, but this would run the risk of runs breaking whenever we released newer operating systems. We care a lot about making sure runs never spontaneously break, so we didn't like the idea of ever automatically rolling out a new version.

There are techniques that dev tool companies use to mitigate this problem, such as sending out advanced notices with recommendations to test, or configuring a default value out-of-band, such as in the web UI for the account. We considered those approaches undesirable.

Config Injection with the CLI

After some contemplation, Tommy suggested having the CLI automatically inject the base OS configuration. It's the best of both worlds.

Since engineers are already testing RWX run definitions using the CLI, we can make the operating system required without requiring people to enter it themselves.

Automatic configuration is the best technique to have explicit values without requiring boilerplate.

Example

Start with a config file without an operating system specified

tasks.yml
1
tasks:
2
- key: hello-world
3
run: echo "hello world"

Run the file

shell
rwx run --file tasks.yml --open

Have the base operating system automatically configured

tasks.yml
1
base:
2
os: ubuntu 24.04
3
tag: 1.1
4
5
tasks:
6
- key: hello-world
7
run: echo "hello world"

Demo

Never miss an update

Get the latest releases and news about RWX and our ecosystem with our newsletter.

Share this post

Enjoyed this post? Pleas share it on your favorite social network!

Related posts

Read more on updates and advice from the RWX engineering team

See all posts
Using an MCP Server to Fix Tests that Failed on CI
CI/CD

Using an MCP Server to Fix Tests that Failed on CI

We shipped an MCP Server via the RWX CLI. Use it to have AI fix tests that failed on CI, powered by RWX tracking test failures as a semantic output.

Aug 8, 2025
Read now
tmpfs for Super Fast Writes
CI/CD

tmpfs for Super Fast Writes

To accelerate performance in high iops scenarios like an npm install, we built support for running tasks using tmpfs.

Aug 6, 2025
Read now
RWX July 2025 Recap: ARM runners, VS Code Extension, and more
CI/CD

RWX July 2025 Recap: ARM runners, VS Code Extension, and more

In July we released ARM runners, a VS Code Extension, and an option to start runs manually. Stay tuned for progress on a new way to build container images.

Aug 4, 2025
Read now