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