Updating Our macOS Open Source Offering
blog.travis-ci.com
blog.travis-ci.com
Edit: photo of goofy setup here https://www.macstadium.com/datacenters/
But you're right, it needs to scale much better. I'm surprised how many people think macOS VMs are available at Amazon only to visit and see that's not the case. Maybe this is part of the reason for all the new Apple data centers...someday.
Building datacenters that run Linux is easier and cheaper, but Apple is a hardware company, they want to sell you hardware, so there's not much incentive for them to allow people to virtualize macOS on non-Mac hardware.
That said, since they don't make appropriate hardware for this, I'm not sure I'd want to tax a Mac mini with more than 2 VMs anyway ;)
For those curious about the setup, we have our own infrastructure that runs a custom in-memory Linux-based OS called Build OS[3] that performs build tasks in throw-away VMs (KVM). This is used for all targets, including Mac OS (though we have to run Mac OS builds on a bunch of Mac Mini's due to Apple's licensing restrictions).
'ksherlock, if you really want a newer compiler, I'd use http://apt.llvm.org/ . Specifically do something like
sudo: required
before_install:
- curl https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
- echo "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty main" | sudo tee /etc/apt/sources.list.d/llvm.list
- sudo apt-get update
- sudo apt-get install clang-6.0
which will get you the latest nightly build of the not-yet-released clang 6.Alternatively I think you can do it like this without sudo: required:
addons:
apt:
sources:
- llvm-toolchain-trusty-5.0
packages:
- clang-5.0
but clang-6.0 isn't on their whitelist https://github.com/travis-ci/apt-package-whitelist . Maybe send in a PR!It would be nice if CircleCI or Travis CI offered as that would mean not having to pay them for instances and instead turning AWS instances into CircleCI/Travis slaves at a lower per-instance cost. I'd still be happy to pay for their website and for their system managing the slaves.
This has gotten slightly better over time, but the default is still "slave is just another process alongside the master" – you need to setup any whitelisting of slave filesystem or execution permissions yourself.
Self hosted: Gitlab
Fun fact: before Travis had multi-stage builds, we were able to get multi-stage builds in Travis by using the fact that mac builds were ALWAYS slower than Linux. So we could have our Linux builds create artifacts that were then used by Mac builds ...