AWS進一步強化Apple生態(tài)系的開發(fā),在CodeBuild添加macOS執(zhí)行實例選項,推出CodeBuild for macOS,讓開發(fā)者可以構建iOS與macOS等Apple平臺的應用程序,這提供了Apple應用程序開發(fā)團隊可擴展性、較低基礎設施管理負擔,以及專用macOS構建環(huán)境等優(yōu)點。
過去,開發(fā)者通常在本地環(huán)境或是自建的CI/CD服務器上開發(fā)和構建Apple應用程序。要在iOS、iPadOS、watchOS、tvOS或macOS上進行構建、測試、簽署和發(fā)布必須使用Xcode,而Xcode只能在macOS上運行。開發(fā)者也可以自行配置CI系統(tǒng)來自動執(zhí)行構建和測試任務,但這需要管理基礎設施,并且必須處理不同版本的macOS和Xcode,還有其軟件更新的問題。
AWS CodeBuild則提供了一個全托管持續(xù)集成服務,其主要功能可協(xié)助開發(fā)者自動編譯程序代碼、執(zhí)行測試,以及生成可部署的軟件組件。macOS應用程序開發(fā)者可利用CodeBuild自動化和標準化構建流程,CodeBuild可依據(jù)用戶的需求自動擴展資源。而且CodeBuild也能集成其他AWS服務,讓程序代碼管理到應用部署都可以在同一個平臺上進行。
典型的CI/CD流程,從開發(fā)者提交新的程序代碼或是拉取請求開始,安裝在機器上的存儲庫代理會觸發(fā)各種腳本來配置環(huán)境、構建和測試應用程序,最終將其部署至App Store Connect。而過去AWS所推出的EC2 Mac,已可供開發(fā)者方便管理和自動化macOS機器。
不過,即便使用EC2 Mac仍會面臨兩個問題,首先是開發(fā)者需要準備AMI(Amazon Machine Image),這通常包括安裝Xcode、Fastlane和其他開發(fā)工具來配置構建環(huán)境,不同的macOS和Xcode需要多種構建環(huán)境,第二個問題,對于每天需要進行數(shù)百數(shù)千次構建的大型組織,需要彈性縮放機器規(guī)模,而要根據(jù)構建的數(shù)量和持續(xù)時間擴展與縮減機隊的任務復雜且耗時。
CodeBuild for macOS解決了這些問題,該服務仍是以EC2 Mac執(zhí)行實例為基礎運行。CodeBuild for macOS提供預配置的AMI,其中預先安裝開發(fā)常用的工具和函數(shù)庫,開發(fā)者可以直接使用這些標準化鏡像文件。另外,CodeBuild for macOS還支持預留容量機隊功能,CodeBuild可自動分配和管理執(zhí)行實例資源,開發(fā)者只需要指定容量,系統(tǒng)便會自動處理擴展和縮減的細節(jié)。
使用EC2 Mac執(zhí)行實例第一次進行構建需要8到10分鐘的準備時間,在這個期間提交的構建將進入隊列等候。由于CodeBuild for macOS使用預留容量機隊,與按分鐘計費的按需機隊不同,沒有構建任務仍會持續(xù)產生費用。構建期間CodeBuild會清理工作目錄,允許使用本地緩存加速后續(xù)構建。目前CodeBuild for macOS已經在美東、美西、歐洲和亞太區(qū)域提供。