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
Manually Initiating CI Runs
CI/CD

Manually Initiating CI Runs

We just shipped a new feature to manually initiate CI runs on RWX. Make CI opt-in to to push code freely without incurring higher CI costs.

Jul 17, 2025
Read now
Fast File Tree Navigation, Powered by WebAssembly
CI/CD

Fast File Tree Navigation, Powered by WebAssembly

We shipped a web-based file tree navigator to see files from a task's output. To make browsing as fast as possible, we implemented it in WebAssembly.

Jul 11, 2025
Read now
Instantly Starting Batch Downloads
CI/CD

Instantly Starting Batch Downloads

We started to build an asynchronous user experience commonly used for batch downloads. RWX is a platform built on performance though, so we made it faster.

Jul 10, 2025
Read now