在 AWS CodeBuild 中建立快取 - AWS CodeBuild

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

在 AWS CodeBuild 中建立快取

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

注意

Docker 層快取模式僅適用於 Linux 環境。如果您選擇此模式,您必須以特殊權限模式執行您的組建。CodeBuild授予權限模式的專案會授予其容器對所有裝置的訪問權。如需詳細資訊,請參閱「」運行時權限和 Linux 功能在 Docker Docs 網站上的主題。

Amazon S3 快取

Amazon S3 快取會將快取存放在可供多個組建主機使用的 Amazon S3 儲存儲體中。此選項很適合小型到中等大小的組建成品,因為這些成品的組建成本比下載更高。這不是大型建置成品的最佳選項,因為它們在網路上傳輸所需的時間很長,而會影響建置效能。如果您使用 Docker 層,這也不是最佳選項。

本機快取

本機快取將快取存放在組建主機的本機,而僅供該組建主機使用。此選項很適合中繼到大型組建成品,因為組建主機上的快取可供您立即使用。如果是不常存取的組建,這不是最佳選項。這表示組建效能不會受到網路傳輸時間所影響。

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

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

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

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

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

      根據預設,Docker 容器不允許存取任何裝置。「Privileged」(特殊權限) 模式會授予建置專案之 Docker 容器對所有裝置的存取權。如需詳細資訊,請參閱 Docker Docs 網站上的 Runtime Privilege and Linux Capabilities

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

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

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

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

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

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

注意

本地緩存不支持ARM_CONTAINERLINUX_GPU_CONTAINER環境類型和BUILD_GENERAL1_2XLARGE運算類型。如需詳細資訊,請參閱 建置環境運算類型

注意

本地緩存不受支持,當您配置CodeBuild以使用 VPC。如需搭配CodeBuild,請參使用AWS CodeBuildAmazon Virtual Private Cloud

您可以使用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: myBucket 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
注意

根據預設,Docker 容器不允許存取任何裝置。「Privileged」(特殊權限) 模式會授予建置專案之 Docker 容器對所有裝置的存取權。如需詳細資訊,請參閱 Docker Docs 網站上的 Runtime Privilege and Linux Capabilities

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