{"id":31083,"date":"2020-12-18T17:04:14","date_gmt":"2020-12-18T22:04:14","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=31083"},"modified":"2020-12-18T17:05:26","modified_gmt":"2020-12-18T22:05:26","slug":"apple-silicon-mac-mini-for-continuous-integration","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2020\/12\/18\/apple-silicon-mac-mini-for-continuous-integration\/","title":{"rendered":"Apple Silicon Mac mini for Continuous Integration"},"content":{"rendered":"<p><a href=\"https:\/\/steipete.com\/posts\/apple-silicon-mac-mini-for-ci\/\">Peter Steinberger<\/a> (<a href=\"https:\/\/twitter.com\/steipete\/status\/1333809139190034433\">tweet<\/a>):<\/p>\n<blockquote cite=\"https:\/\/steipete.com\/posts\/apple-silicon-mac-mini-for-ci\/\"><p>There&rsquo;s a detailed article coming next in our <a href=\"https:\/\/pspdfkit.com\/blog\/2020\/continuous-integration-for-small-ios-macos-teams\/\">series about Continuous Integration for Small iOS\/macOS Teams<\/a> that goes into more detail on this setup. Of course, there have been a few issues along the way to make the automation work with Apple Silicon.<\/p><p>[&#8230;]<\/p><p>On Apple Silicon, the main APFS container is disk3 and not disk1. Currently this change is hardcoded, eventually I&rsquo;ll modify the the script to parse <code>diskutil list<\/code> to detect the container automatically. It took me quite a while to understand why Cinc stopped with Error: -69493: You can&rsquo;t add any more APFS Volumes to its APFS Container&rdquo;.<\/p><p>[&#8230;]<\/p><p>Some features in our <a href=\"https:\/\/pspdfkit.com\/pdf-sdk\/ios\/\">iOS PDF SDK<\/a> use <code>WKWebView<\/code>, like <a href=\"https:\/\/pspdfkit.com\/pdf-sdk\/reader-view\/#ios\">Reader View that reflows PDFs so they are easier to read on mobile devices<\/a>. These tests <a href=\"https:\/\/steipete.com\/posts\/apple-silicon-m1-a-developer-perspective\/\">crash with a memory allocator error on Big Sur<\/a>.<\/p><p>[&#8230;]<\/p><p><code>launchctl<\/code> changed a bit in Big Sur and now throws <a href=\"https:\/\/twitter.com\/steipete\/status\/1338155208044638210?s=21\">&ldquo;Bootstrap failed: 125: Unknown error: 125&rdquo;<\/a> or &ldquo;Load error 5: input\/output error&rdquo; if the service is already running.<\/p><\/blockquote>\n<p>The performance is 10% faster for iOS 14 but slower for older versions that run in Rosetta. The big win was finding some bugs that only happen on arm64.<\/p>\n\n<p><a href=\"https:\/\/twitter.com\/steipete\/status\/1338805487077306368\">Peter Steinberger<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/steipete\/status\/1338805487077306368\">\n<p>Been updating the machines to Big Sur 11.1&#8230; did Apple just completely override our custom ssh configuration in that update?<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/twitter.com\/tzeejay\/status\/1338993105215877121\">Constantin Jacob<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/tzeejay\/status\/1338993105215877121\">\n<p>This is 95% of the hard part of maintaining macOS CI infrastructure. The problem is Apple.\n MacStadium can&rsquo;t help you with this and will tell you kindly, nobody at AWS is even going to pickup the phone for this shit and nobody at Apple understands what you&rsquo;re complaining about<\/p>\n<\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2020\/12\/03\/official-macos-hosting-and-amazon-ec2\/\">Official macOS Hosting and Amazon EC2<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2020\/11\/19\/rosetta-2-not-preinstalled\/\">Rosetta 2 Not Preinstalled<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2020\/11\/12\/apple-m1-benchmarks\/\">Apple M1 Benchmarks<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Peter Steinberger (tweet): There&rsquo;s a detailed article coming next in our series about Continuous Integration for Small iOS\/macOS Teams that goes into more detail on this setup. Of course, there have been a few issues along the way to make the automation work with Apple Silicon.[&#8230;]On Apple Silicon, the main APFS container is disk3 and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2020-12-18T22:04:20Z","apple_news_api_id":"acfd110a-ee81-4dfb-8d22-361c07d108ed","apple_news_api_modified_at":"2020-12-18T22:05:30Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAA==","apple_news_api_share_url":"https:\/\/apple.news\/ArP0RCu6BTfuNIjYcB9EI7Q","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[1395,2014,500,30,557,1891,71,1424,268],"class_list":["post-31083","post","type-post","status-publish","format-standard","hentry","category-technology","tag-apple-file-system-apfs","tag-apple-m1","tag-launchd","tag-mac","tag-macmini","tag-macos-11-0","tag-programming","tag-pspdfkit","tag-testing"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/31083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=31083"}],"version-history":[{"count":2,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/31083\/revisions"}],"predecessor-version":[{"id":31090,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/31083\/revisions\/31090"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=31083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=31083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=31083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}