在 AWS CodeBuild 中建立快取 - AWS CodeBuild

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 AWS CodeBuild 中建立快取

當您的專案使用快取來建置時,可以為您省下時間。快取可以存放組建環境的可重複使用部分,並在多個組建間使用這些部分。您的建置專案可以使用以下兩種快取類型之一:Amazon S3 或本機。如果您使用本機快取,您必須從三種快取模式中選擇一或多種:來源快取、Docker 層快取和自訂快取。

注意

Docker 層快取模式僅適用於 Linux 環境。如果您選擇此模式,則必須以授權模式執行組建。 CodeBuild 授予特權模式的專案會將其容器存取權授予所有裝置。如需詳細資訊,請參閱 Docker 文件網站上的執行階段權限和 Linux 功能

Amazon S3 緩存

Amazon S3 快取會將快取存放在可跨多個建置主機使用的 Amazon S3 儲存貯體中。這是一個很好的選擇,對於建立比下載更昂貴的小型到中間大小的構建成品。這不是大型建置成品的最佳選項,因為它們在網路上傳輸所需的時間很長,而會影響建置效能。如果您使用 Docker 層,這也不是最佳選項。

本機快取

本機快取將快取存放在組建主機的本機,而僅供該組建主機使用。對於中級到大型組建構件來說,這是一個不錯的選擇,因為快取會立即在建置主機上使用。如果是不常存取的組建,這不是最佳選項。這表示組建效能不會受到網路傳輸時間所影響。

如果您選擇本機快取,您必須選擇以下一或多個快取模式:

  • 來源快取模式會快取主要和次要來源的 Git 中繼資料。建立快取之後,後續組建只會提取遞交之間的變更。如果專案有全新的工作目錄,且來源是大型的 Git 儲存庫,此模式是很好的選擇。如果您選擇此選項,而您的專案並未使用 Git 儲存庫 (AWS CodeCommit GitHub、 GitHub 企業伺服器或 Bitbucket),則會忽略此選項。

  • Docker 層快取模式會快取現有的 Docker 層。如果專案會建置或提取大型 Docker 影像,此模式是很好的選擇。它可以避免從網路提取大型 Docker 影像所造成的效能問題。

    注意
    • 您只能在 Linux 環境中使用 Docker 層快取。

    • 您必須設定 privileged 旗標,專案才能具備所需的 Docker 許可。

      依預設,非 VPC 組建會啟用 Docker 精靈。如果您想使用 Docker 容器進行 VPC 構建,請參閱 Docker 文檔網站上的運行時特權和 Linux 功能並啟用特權模式。此外,Windows 不支援特殊權限模式。

    • 使用 Docker 層快取之前,您應該考慮安全隱憂。

  • 自訂快取模式會快取您在 buildspec 檔案中指定的目錄。如果您的組建案例不適合其他兩個本機快取模式,此模式是很好的選擇。如果您使用自訂快取:

    • 只能指定目錄來快取。您不能指定個別檔案。

    • 符號連結用來參考快取的目錄。

    • 在您的組建下載其專案來源之前,快取的目錄會連結到您的組建。如果快取項目具有相同名稱,則會覆寫來源項目。目錄的指定方式是使用 buildspec 檔案中的快取路徑。如需詳細資訊,請參閱 Buildspec 語法

    • 避免來源和快取中的目錄名稱相同。本機快取的目錄可能會覆寫或刪除具有相同名稱之來源儲存庫中的目錄內容。

注意

LINUX_GPU_CONTAINER環境類型和BUILD_GENERAL1_2XLARGE計算類型不支援本機快取。如需詳細資訊,請參閱 建置環境運算模式和類型

注意

當您設定 CodeBuild 為使用 VPC 時,不支援本機快取。如需搭配使用 VPC 的詳細資訊 CodeBuild,請參閱使用AWS CodeBuild使用亞馬遜虛擬私有雲

您可以使用AWS CLI、主控台、SDK 或指AWS CloudFormation定本機快取。

指定本機快取 (CLI)

您可以在 AWS CLI 中使用 --cache 參數指定三種本機快取類型的每一種。

  • 若要指定來源快取:

    --cache type=LOCAL,mode=[LOCAL_SOURCE_CACHE]
  • 若要指定 Docker 層快取:

    --cache type=LOCAL,mode=[LOCAL_DOCKER_LAYER_CACHE]
  • 若要指定自訂快取:

    --cache type=LOCAL,mode=[LOCAL_CUSTOM_CACHE]

如需詳細資訊,請參閱 建立建置專案 (AWS CLI)

指定本機快取 (主控台)

您可以在主控台的 Artifacts (成品) 區段中指定快取。對於快取類型,請選擇 Amazon S3本機。如果您選擇 Local (本機),請從三種本機快取選項中選擇一或多種。

如需詳細資訊,請參閱 建立組建專案 (主控台)

指定本機快取 (AWS CloudFormation)

如果您使用 AWS CloudFormation 指定本機快取,對於 Cache 屬性的 Type,請指定 LOCAL。以下 YAML 格式的 AWS CloudFormation 程式碼範例將指定所有三種本機快取類型。您可以指定這些類型的任意組合。如果您使用 Docker 層快取,在 Environment 下,您必須將 PrivilegedMode 設定為 true,將 Type 設定為 LINUX_CONTAINER

CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: <service-role> Artifacts: Type: S3 Location: <bucket-name> Name: myArtifact EncryptionDisabled: true OverrideArtifactName: true Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:5.0 Certificate: <bucket/cert.zip> # PrivilegedMode must be true if you specify LOCAL_DOCKER_LAYER_CACHE PrivilegedMode: true Source: Type: GITHUB Location: <github-location> InsecureSsl: true GitCloneDepth: 1 ReportBuildStatus: false TimeoutInMinutes: 10 Cache: Type: LOCAL Modes: # You can specify one or more cache mode, - LOCAL_CUSTOM_CACHE - LOCAL_DOCKER_LAYER_CACHE - LOCAL_SOURCE_CACHE
注意

依預設,非 VPC 組建會啟用 Docker 精靈。如果您想使用 Docker 容器進行 VPC 構建,請參閱 Docker 文檔網站上的運行時特權和 Linux 功能並啟用特權模式。此外,Windows 不支援特殊權限模式。

如需更多詳細資訊,請參閱 建立建置專案 (AWS CloudFormation)