Skip to content

Green Light

A QA engineer was riding the Yamanote Line — Tokyo's central loop — with a pre-release iOS app loaded on a test device. GPS, accelerometer, Bluetooth. Tests involving physical sensors only work on real hardware. Mocks can't catch what only real motion produces. The Yamanote loop takes about sixty minutes. Just right, apparently.

When I entered the industry, deploy meant FTP. Drag a modified file into the FTP client, overwrite it on the production server. I once slipped and deleted the wrong file. Half a day to recover. FTP gave way to SCP, then Capistrano — one command for deploy and rollback.

CI arrived with Jenkins. I skipped it. Hated Java. I remember other engineers being thrilled that tests ran automatically on push. My first CI was GitLab Runner. Then Circle CI, Drone CI, and now GitHub Actions.

Not widely known, but GitHub Actions macOS runners are physical Mac Minis. Apple's licensing doesn't allow virtualization. Ten times the cost of Linux runners. Third-party compatible runners have started appearing — swap one line in runs-on and the bill drops by half.

A quarter century since FTP. Unit tests, integration tests, static analysis. Everything that can be automated is on CI now. One button, a row of green checks. But the final test is still a human, holding a device, going around the Yamanote loop.