

On Apple Silicon, the main APFS container is disk3 and not disk1. We manually enter the disk password on a power cycle or when the OS reboots because of an update. If hardware is replaced, the data is useless.
XCODE FOR MAC MINI CODE
This ensures our source code is always encrypted. We automate diskutil to create a new encrypted volume for the CI user.

There’s also a messy randomness to what is renamed “cinc” and what is “chef.” APFS Containers
XCODE FOR MAC MINI UPDATE
Don’t mindlessly update the gems, as Chef is faster in releasing binaries and overriding all your Cinc binaries, and then nothing works anymore unless you insert dollars or manually remove all Chef gems. This will ensure the script detects Intel architecture and will download the client.Ĭareful: The Chef/Cinc situation is tricky. To work around this, modify the chef_full.erb script in the knife gem and add arch -x86_64 before the sh $tmp_dir/install.sh part.
XCODE FOR MAC MINI INSTALL
Since the install script does platform detection, it’ll fail with an error, as there’s no binary for Cinc available yet. It does make CI easier, since the Cinc client will run in 圆4 emulation mode, so anything it installs will also default to 圆4, which is slower but generally works. There’s no Chef or Cinc release for Apple Silicon yet, which is both a blessing and a curse. usr/sbin/softwareupdate -install-rosetta -agree-to-license This is curiously not the default in Big Sur, but it only takes a few seconds via the terminal: The first thing you’ll need to do on the new machines is install Rosetta to enable Intel emulation. Of course, there have been a few issues we encountered along the way to get the automation to work with Apple Silicon. There’s a detailed article coming next in our Continuous Integration for Small iOS/macOS Teams series, and it goes into more detail on this setup. After a few hours, setup is complete and the machine automatically registers itself on Buildkite as a new agent. It does everything from creating a CI user with an APFS-encrypted drive and configuring firewall rules, to installing dependencies like ccache for faster compiling and Ruby for scripting, and installing Xcode and required Simulators. We’re using Cinc (the open source binary package of Chef) and Knife-Zero to automate the setup process for new nodes. If you’re interested, I explored the tradeoffs between virtualization and bare metal on the PSPDFKit blog. Linking and code-signing are tasks Apple hasn’t yet parallelized, so single-core performance is a significant factor for CI performance.Ī recap: We run a raw Mac mini setup (6-core 3.2 GHz, 64 GB RAM, 1 TB SSD, 10Gbs). 1100/5465, so the promise is more than 30 percent increased performance - even more so for single-threaded operations. A few days ago, we finally got access to two M1 Mac minis hosted on MacStadium (8-core M1, 16 GB unified memory, 1 TB SSD, 1 GbE).

Ever since the M1 was announced, I’ve been curious how well Apple’s new Mac mini would perform for our CI system.
