Skip to content

announcement

2024 03 29 standby instance

Persistent Workers Get a Boost with Standby Instances

We're excited to announce a new feature for Cirrus CI persistent workers: Standby Instances. This functionality significantly improves scheduling efficiency when dealing with many persistent workers, leading to faster task execution and a smoother CI/CD experience.

Background: Persistent Workers and Scheduling Challenges

Cirrus CI's persistent workers offer a powerful way to run tasks on dedicated infrastructure, including bare metal and virtual machines. This is ideal for scenarios where you need more control over the environment or want to leverage specific hardware configurations.

However, with many persistent workers, scheduling tasks efficiently can be challenging. Previously, when a task was assigned to a worker, the persistent worker itself would:

  1. Pull an image: This could take several minutes if the image is missing or outdated.
  2. Boot the VM: This added another 10-20 seconds to the overall task execution time.

This delay could be frustrating, especially when dealing with frequent builds and deployments.

Introducing Standby Instances: Faster Scheduling, Smoother CI/CD

Standby instances address this challenge by ensuring tasks are assigned to workers that are already prepared. Here's how it works:

Limiting free usage of Cirrus CI

Unfortunately the day has come. As a self-bootstrapped company Cirrus Labs can no longer provide unlimited usage of Cirrus CI for public repositories for free. We have to put a limit on the amount of compute resources that can be consumed for free each month by organizations and users. Starting September 1st 2023, there will be an upper monthly limit on free usage equal to 50 compute credits (which is equal to a little over 16,000 CPU-minutes for Linux tasks).

The reason for the change is that we want to continue being a profitable business and keep Cirrus CI running, but unfortunately we haven’t found a better solution for a couple of ongoing issues described below.

Sunsetting Intel macOS instances

TLDR Intel-based Big Sur and High Sierra instances will stop working on January 1st 2023. Please migrate to M1-based Monterey and Ventura instances. Below we'll provide some history and motivation for this decision.

Evolution of macOS infrastructure for Cirrus CI

We've been running macOS instances for almost 5 years now. We evaluated all the existing solutions and even successfully operated two of them on Intel platform before creating our own virtualization toolset for Apple Silicon called Tart. We are switching managed-by-us macOS instances to exclusively running in Tart virtual machines starting January 1st 2023.

GitHub Actions on M1 via Cirrus Runners

Apple Silicon is the inevitable future. Apple has no plans to release any x86 hardware anymore. In addition, many people reported huge performance improvements after switching their builds to Apple Silicon. There are no excuses not to switch to Apple Silicon except if your CI is not supporting it yet.

In this case, we are happy to announce Cirrus Runners -- managed Apple Silicon infrastructure for your existing CI. Cirrus Runners are powered by the same infrastructure we've built other the years running macOS tasks as part of Cirrus CI. We believe we have the most advanced and scalable tech out there for running macOS CI. We even created and open-sourced our own virtualization technology for Apple Silicon!

Isolating network between Tart’s macOS virtual machines

Some time has passed since Cirrus Labs released Tart, an open-source tool to manage and run macOS virtual machines on Apple silicon. As Tart matured, we started using it for Cirrus CI’s macOS VM instances to replace other proprietary solutions.

However, there are some roadblocks that prevent us from scaling and running more than one VM on a single host:

Introducing Cirrus Terminal: a simple way to get SSH-like access to your tasks

Imagine dealing with a failing task that only reproduces in CI or a task with an environment that is is simply too cumbersome to bootstrap locally.

For a long time, the classic debugging approach worked just fine: do an attempt to blindly fix the issue or add debugging instructions and re-run. Got it working or found a clue? Cool. No? Do it once again!

Then Cirrus CLI appeared. It allows you to replicate the CI environment locally, but complex cases like custom VMs or other architectures are not covered due to platform limitations.

Anyway, both methods require some additional tinkering to gain access to the interactive session on the host where the task runs (i.e. something similar to docker exec -it container-ID).

Luckily no more! With the recent Cirrus Terminal integration, it’s now possible to have this one click away on Cirrus Cloud!

New macOS task execution architecture for Cirrus CI

We are happy to announce that the macOS tasks on Cirrus CI Cloud have switched to a new virtualization technology as well as overall architecture of the orchestration. This switch should be unnoticeable for the end users except that the tasks should become much faster since now each macos_instance of the Cirrus CI Cloud offering will utilize a full Mac Mini with 12 virtual CPUs and 24G of RAM.

Announcing public beta of Cirrus CI Persistent Workers

Cirrus CI pioneered an idea of directly using compute services instead of requiring users to manage their own infrastructure, configuring servers for running CI jobs, performing upgrades, etc. Instead, Cirrus CI just uses APIs of cloud providers to create virtual machines or containers on demand. This fundamental design difference has multiple benefits comparing to more traditional CIs:

Cirrus CLI — CI-agnostic tool for running Dockerized tasks

Most Continuous Integration vendors try to lock you not only by providing some unique features that were attractive in the first place but also by making you write hundreds of lines of YAML configuration unique to this particular CI or by making you configure all your scripts in the UI. No wonder it’s always a pain to migrate to another CI and it’s hard to justify the effort! There are so many things to rewrite from one YAML format into another YAML format.

Today we are happy to announce Cirrus CLI — an open source tool to run isolated tasks in any environment with Docker installed. Use one configuration format for running your CI builds the same way locally on your laptop or remotely in any CI. Read below to learn more about our motivation and technical details or jump right to the GitHub repository and try Cirrus CLI for yourself!

GitHub Annotations Support

While working on a new functionality or fixing an issue it’s crucial to get CI feedback as soon as possible. Fast CI builds are important but it’s also important how fast one can find a reason of a failing build. Usual flow requires to open a separate page for the failing CI build and scroll through all the logs to finally find a relevant error message. How inefficient!

Today Cirrus CI starts supporting GitHub Annotations to provide inline feedback right where you review your code. No need to switch context anymore!