AWS has added features to its CodeBuild service, most notably macOS instances for building applications for iOS and Mac, as well as improved integration with GitHub via GitHub App connections which allow short-lived and fine-grained permissions.
The enhancements to CodeBuild have come despite the company retreating from some of its other DevOps services, including CodeCommit repositories and the Cloud9 IDE.
Until now, CodeBuild has offered Linux (including ARM), Lambda serverless or Windows machines for the service, to which is now added Mac Minis in two configurations, 24GB and 8 vCPU from $28.80 per 24 hours, or 32GB and 12 vCPU from $51.84 per 24 hours.
Principal developer advocate Sébastien Stormacq explained that “CodeBuild for macOS is based on the recently introduced reserved capacity fleet, which contains instances powered by Amazon EC2 that are maintained by CodeBuild.” There is currently a single disk image, which includes Xcode, clang, dotnet sdk, gcc, golang, gnu fortran, Java, Kotlin, mono, nodejs, perl, php, python, ruby, rust and swift. It is also possible to create a custom image.
While this is a useful enhancement for CodeBuild, particularly since building for iOS can only be done on macOS, there are some awkward details. CodeBuild has two provisioning models, on-demand and reserved capacity, or Lamdba as a third option. With on-demand or Lambda, developers get automatic scaling as well as paying only for the build minutes used.
The new macOS machines though require reserved capacity, with an additional condition that each Mac instance must be used for 24 hours before it can be released. Reserved capacity instances are dedicated and incur cost for as long as they are provisioned. This makes the new service expensive especially for customers with lighter build requirements.
Stormacq said the blame for this lies with Apple. “The capacity reservation follows the Amazon EC2 Mac 24-hour minimum allocation period” he wrote, referencing the software license agreement for the latest macOS which has a section entitled “leasing for permitted developer services” that states “each lease period must be for a minimum period of twenty-four (24) consecutive hours.”
GitHub Actions by contrast offers macOS minutes without this restriction.
Stormacq also stated that “CodeBuild makes it easy to configure auto scaling” for the new service but it is not clear how this will work, since the CodeBuild auto-scaling option only works with on-demand provisioning.