Alright, so, summary of the CI because some people have asked for it:
The CI is based on GitHub Actions, and has two primary components, the main CI and the tool updater.
The main CI runs in part for every pull request or push, where it builds the Docker image and runs a test set (parallelized across 5 instances using GitHub Actions' matrix feature,) and reports success or failure. If it's a PR, the Docker image is deleted, but if it's a push, a tag with the name of the branch (or latest for the master branch) is pushed to Docker Hub.
Once every 24 hours, the full version of the CI runs, where it runs a longer, 4-5 hour test set. If this test succeeds and there are new commits, a new tag is created on GitHub and a release occurs, also pushing a tag with the name of the release to Docker Hub.
We're planning to alter this in the immediate future to reflect a new release model.
The tool updater runs once every 24 hours as well. It checks for new commits to magic, yosys, netgen or the sky130 PDK, and if it finds any, it builds them and creates a pull request with the updated binaries (we store binaries in the repository, which is generally ill-advised and one of the things we'd like to change). This pull request is treated as any contributor's pull request would.