「AWS CodeBuild 常見問答集」
一般
問:什麼是 AWS CodeBuild?
AWS CodeBuild 是在雲端的全受管持續整合服務。CodeBuild 可編譯原始碼、執行測試,並產生可立即部署的軟體套件。使用 CodeBuild 即可不必佈建、管理、擴展自己的組建伺服器。CodeBuild 會自動擴展和縮減並同時處理多個組建,所以您的組建不必在佇列中等候。您可以利用 CodeBuild 預先整裝好的組建環境立即開始使用,或是利用自訂組建環境使用您自己的組建工具。使用 CodeBuild 時,是以分計費。
問:為什麼我應該使用 CodeBuild?
與其由您親自設定、修補、維護組建伺服器軟體,不如利用 CodeBuild 的全受管服務。將組建任務提交至 CodeBuild,便會在暫時的運算容器中執行,每一次組建會建立全新的暫時運算容器,並在完成後丟棄。您不必管理組建伺服器硬體或軟體。CodeBuild 也會自動擴展以滿足您的組建容量需求。它會馬上處理您提交的每一個組建,而且可以同時執行不同的組建,因此您的組建不必排入佇列中等候。
問:CodeBuild 的定價多少?
請參閱 AWS CodeBuild 定價頁面了解詳細資訊。
使用 CodeBuild
問:什麼是組建專案?
組建專案是用來定義 CodeBuild 執行組建的方式。其中的資訊包括何處可取得原始碼、應使用哪個組建環境、要執行的組建命令、組建輸出的存放位置。組建環境結合了作業系統、程式設計語言執行時間、CodeBuild 用以執行組建的工具。
問:如何設定組建專案?
您可以透過主控台或 AWS CLI 設定組建專案。您必須指定原始儲存庫位置、執行時間環境、組建命令、容器採用的 IAM 角色以及執行組建所需的運算等級。您也可以選擇在 buildspec.yml 檔案中指定組建命令。
問:CodeBuild 支援哪一種原始儲存庫?
CodeBuild 可以連接至 AWS CodeCommit、S3、GitHub 和 GitHub Enterprise 以及 Bitbucket,以提取原始碼進行組建。
問:CodeBuild 支援哪一種程式設計架構?
CodeBuild 為支援的 Java、Ruby、Python、Go、Node.js、Android、.NET Core、PHP 和 Docker 版本提供了預先設定的環境。您可以建立一個 Docker 影像,上傳至 Amazon EC2 Container Registry 或 Docker Hub 登錄檔,自訂您自己的環境。然後您便可以在組建專案中參考這個自訂影像。
問:CodeBuild 提供哪些預先設定的 Windows 組建執行時間?
CodeBuild 針對 .NET Core 2.0 提供預先設定的 Windows 組建環境。我們希望為 Microsoft .NET Framework 客戶提供預先設定的組建環境,這些客戶大部分都擁有使用 Microsoft 專屬程式庫的授權。但是,Microsoft 目前不願意與我們合作解決這些客戶請求。您可以建立一個 Docker 影像,上傳至 Amazon EC2 Container Registry 或 Docker Hub 登錄檔,自訂您自己的環境以支援 .NET Framework 等其他組建目標。然後您便可以在組建專案中參考這個自訂影像。
問:執行組建時會發生什麼事?
CodeBuild 會根據組建專案中定義的類別建立一個暫時運算容器,用指定的執行時間環境載入,接著下載原始碼,執行專案所設定的命令,將產生的成品上傳至 S3 儲存貯體,然後再銷毀運算容器。在組建時,CodeBuild 會把組建輸出串流到服務主控台以及 Amazon CloudWatch。
問:如何設定我的第一個組建?
登入 AWS 管理主控台,建立一個組建專案,然後執行組建。有關 CodeBuild 的簡介,請參閱入門指南,內含逐步操作教學課程。您也可以使用 CodeBuild Local 在本機對組建進行測試和偵錯。
問:Jenkins 可以和 CodeBuild 搭配使用嗎?
是。Jenkins 適用的 CodeBuild 外掛程式可以將 CodeBuild 整合至 Jenkins 任務。組建任務會傳送到 CodeBuild,所以不必佈建和管理 Jenkins 工作者節點。
問:如何檢視過去的組建結果?
您可以透過主控台、CloudWatch 或 API 存取過去的組建結果。組建結果包括最終成果 (成功或失敗)、組建持續時間、輸出成品位置、記錄位置。您可以使用 CodeBuild 儀表板查看指標,了解一段時間的組建行為。儀表板可顯示組建嘗試、成功和失敗的次數,以及組建的持續時間。您也可以瀏覽 CloudWatch 主控台,查看更詳細的組建指標。要進一步了解使用 CloudWatch 監控 CodeBuild,請瀏覽我們的文件。
問:如何為過去失敗的組建除錯?
您可以檢查執行組建時產生的詳細日誌,對組建進行偵錯,或者使用 CodeBuild Local 在本機對組建進行測試和偵錯。
問:為什麼 build.general1.small 不支援適用於 Windows 組建環境的 .NET Core?
適用於 Windows 組建環境的 .NET Core 由於 Windows Docker 容器和其他程式庫大小的關係,需要的記憶體和處理能力較 build.general1.small 運算執行個體類型提供的還多。由於這項限制,我們不提供適用於 Windows 組建環境的 .NET Core 免費方案。
問:如何接收 AWS CodeBuild 中任何事件的通知或警示?
您可以針對影響您建立專案的事件來建立通知。通知會以 Amazon SNS 通知的形式傳送。每則通知都會包括狀態訊息,以及生成該通知的事件資源連結。 通知不需額外付費,但您可能需要支付通知所使用的其他 AWS 服務費用,例如 Amazon SNS。如需了解如何開始使用通知,請參閱通知使用者指南。此外,使用 AWS Chatbot 的客戶可以設定要傳送至 Slack 頻道或 Amazon Chime 聊天室的通知。如需更多詳細資訊,請按一下這裡。
安全性
問:由 CodeBuild 儲存的組建成品可以加密嗎?
是。您可以指定儲存在 AWS Key Management Service (AWS KMS) 的金鑰來加密您的成品。
問:CodeBuild 如何隔離屬於其他客戶的組建?
CodeBuild 執行您的組建版本時,是在和其他使用者隔離的全新環境中進行,而且完成後便會捨棄組建環境。CodeBuild 在基礎設施和執行層級提供安全性及區隔功能。
問:我可以使用 AWS Identity and Access Management (IAM) 管理 CodeBuild 的存取權限嗎?
是。您可以透過 IAM 政策的資源層級許可控制組建專案的存取。
區域
進一步了解 AWS CodeBuild 定價