快取建置可改善效能 - AWS CodeBuild

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

快取建置可改善效能

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

注意

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

Amazon S3 快取

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

本機快取

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

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

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

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

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

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

      根據預設,Docker 常駐程式會針對非VPC建置啟用。如果您想要使用 Docker 容器進行VPC建置,請參閱 Docker Docs 網站上的執行期權限和 Linux 功能,並啟用權限模式。此外,Windows 不支援特權模式。

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

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

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

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

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

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

注意

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

注意

當您將 設定為 CodeBuild 使用 時,不支援本機快取VPC。如需VPCs搭配 使用 的詳細資訊 CodeBuild,請參閱 AWS CodeBuild 搭配 Amazon Virtual Private Cloud 使用

指定本機快取

您可以使用 AWS CLI、主控台SDK、 或 AWS CloudFormation 來指定本機快取。如需本機快取的詳細資訊,請參閱 本機快取

指定本機快取 (CLI)

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

  • 若要指定來源快取:

    --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 S3Local 。如果您選擇 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
注意

根據預設,Docker 常駐程式會針對非VPC建置啟用。如果您想要使用 Docker 容器進行VPC建置,請參閱 Docker Docs 網站上的執行期權限和 Linux 功能,並啟用權限模式。此外,Windows 不支援特權模式。

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